注册 登录
编程论坛 C语言论坛

这个指针调用函数为什么不可以?

福建刘德华 发布于 2020-02-16 17:34, 1665 次点击
void main()
{
    int max(int,int);
   
    int (*p)();
    int a,b,c;
   
    p=max;
   
    scanf("%d %d",&a, &b);
   
    c = (*p)(a,b);
   
    printf("a=%d,b=%d,max=%d\n",a,b,c);
}

int max(int x,int y)
{
    int z;
   
    if( x > y )
    {
        z = x;
    }
    else
    {
        z = y;
    }
   
    return z;
}
5 回复
#2
福建刘德华2020-02-16 17:34
求大神解答
#3
xianfajushi2020-02-16 18:14
程序代码:

int max11(int x, int y)
{
    int z;

    if (x > y)
    {
        z = x;
    }
    else
    {
        z = y;
    }

    return z;
}

程序代码:

    int(*p)(int a,int b);
    int a, b, c;

    p = max11;

    scanf_s("%d %d", &a, &b);

    c = (*p)(a, b);

    printf("a=%d,b=%d,max=%d\n", a, b, c);
#4
hellobird2020-02-17 15:03
以下是引用福建刘德华在2020-2-16 17:34:20的发言:
#include <stdio.h> //add head files
//void main()
int main(void)
{
    int max(int,int);
   
    //int (*p)();
    int (*p)(int, int);
    int a,b,c;
   
    p=max;
   
    scanf("%d %d",&a, &b);
   
    c = (*p)(a,b);
   
    printf("a=%d,b=%d,max=%d\n",a,b,c);
return 0; //add
}

int max(int x,int y)
{
    int z;
   
    if( x > y )
    {
        z = x;
    }
    else
    {
        z = y;
    }
   
    return z;
}

---------------------------------------------------
修改了一些地方,编译环境,gcc filename.c -Wall  成功, 微软环境可能要改scanf
#5
福建刘德华2020-02-17 16:50
回复 4楼 hellobird
谢谢
#6
福建刘德华2020-02-17 16:50
回复 3楼 xianfajushi
明白了
1