区分这两者很简单,只要在它们中间加入一个的。指针函数则是指针的函数。函数指针就是函数的指针。重点都在后者。
所以指针函数是返回值为指针的函数,而函数指针则是指向函数的指针,可用来调用函数。
指针函数的语法定义:
类型* 函数名 (参数列表);
它一般用来返回全局变量、字符串常量或者static变量的地址。我们熟悉的strcpy、strcat它们就是返回指针,用来输出字符串常量。当你想要从其他函数返回一字符串的时候,这个时候你就可以用指针接收这个字符串的地址,然后在通过返回指针,来访问这字符串。。
例如:
char *test2(int num1){
char *str;
if(num1) str="abc";
else str="123";
return str;
}
int main(int argc, const char * argv[]) {
printf("%s\n",test2(0));
return 0;
}
在上面这道例题中,可以通过让num1的值为真为假,从而输出我们想要的字符串。而num1的真假,我们又可以把它看成是某个条件判断之后的值。
函数指针的语法定义:
返回值类型 (*指针变量)(参数列表);
它就是将指针指向函数的地址,然后利用这个指针来调用函数,因此就可以将函数作为参数使用了,实现函数的多次使用。
例:
int test(int num1,int num2){
return num1>num2?num1:num2;
}
int main(int argc, const char * argv[]) {
int (*p)(int,int)=test;
int max=p(8,p(9,10));
printf("%d\n",max);
return 0;
}