指向函数的指针变量。

目的:输入两个整数,然后让用户选择1or2,选择1时调用max函数 输出较大值,选择2时输出较小值。请问图中的代码出了什么问题,为什么没有得到想要的结果。

img

题主的意思是在一个函数中返回?

#include <stdio.h>

int maxOrMin(const int *x, const int *y, int n);

int main(void) {

    int a, b, n;

    puts("请输入两个整数: ");
    scanf("%d %d", &a, &b);
    puts("请选择1或者2: ");
    scanf("%d", &n);

    if (n == 1)
        printf("max = %d\n", maxOrMin(&a, &b, n));
    else
        printf("mix = %d\n", maxOrMin(&a, &b, n));


    return 0;
}

int maxOrMin(const int *x, const int *y, int n) {

    int temp;

    if (n == 1)
        return temp = (*x < *y) ? *y : *x;
    else
        return temp = (*x < *y) ? *x : *y;
}


这个是基于题主的改进而成的


#include <stdio.h>

int max(int x, int y);
int min(int x, int y);

int main(void) {

    int a, b, n;

    puts("请输入两个整数: ");
    scanf("%d %d", &a, &b);
    puts("请选择1或者2: ");
    scanf("%d", &n);

    if (n == 1)
        printf("max = %d\n", max(a, b));
    else
        printf("mix = %d\n", min(a, b));


    return 0;
}

int max(int x, int y){

    int max_num;
    if (x < y)
        max_num = y;
    else
        max_num = x;
    return max_num;
}

int min(int x, int y) {

    int min_num;
    if (x < y)
        min_num = x;
    else
        min_num = y;

    return min_num;
}

直接调用函数不就行了,为啥还要用函数指针。
再说,p还没有赋值就在12行调用,肯定有问题了。