如何区分这些概念,主要还是看后面两个字,中文表达模式“表语+定性名词”,所以关键的都是后面的这个名词:
指针数组:一个数组,数组元素是指针,如:
int* p[20];
数组指针:一个指针,指向一个数组,如:
int(*p)[20];
函数指针:一个指针,指向一个函数;
基本声明形式:返回数据类型 + (*函数名) + (变量类型1,…);
函数指针声明的时候 * 需要和函数名用括号括起来(优先级问题)。
如:
int (*pFun)(int a, int b);
指针函数:一个函数,返回指针类型;
基本声明形式:返回数据类型 + * + 函数名 + (变量类型1,…);
如:
int* pFun(int a, int b);
指向函数指针的数组:一个数组,数组元素是指向函数的指针,也就是函数指针,如:
int (*p[20])(int a, int b);
总结:函数指针的本质是一个指针,而指针函数的本质是一个函数。
相关实例代码多如牛毛,不再赘述。