C++:
//C++里,指向函数的指针赋值时,参数表和返回值必须严格对应
#include <iostream>
using namespace std;
int main()
{
int max(int,int);
int(*p)(int,int);//这里如果改为int(*p)();就有问题了,用g++编译报错
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);
}
-----------------------------------------
C:
//C里,对于无参的函数,有所不同
#include <stdio.h>
int 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);
}
用gcc编译没问题。
注:在c里形如int f()这样的函数,代表参数可以是任意的。例如:
int main()
{
int max();
max(1,2);
}
int max()
{
int x,y,z;
if(x>y)z=x;
else z=y;
return(z);
}
这个程序编译没问题。要想说明max是无参数的函数,必须定义为int max(void)