区分的关键:
区分指针函数和函数指针的关键是搞清楚谁在谁的后面。(本质上是谁?)
例如数组指针和指针数组:
数组指针和指针数组:
- 数组指针
就是指向数组的指针,它表示的是一个指针,它指向的是一个数组,它的重点是指针,如,int(*pa)[8]声明了一个指针,该指针指向了一个有8个int型元素的数组。 - 指针数组
就是指针的数组,表示的是一个数组, 它包含的元素是指针,它的重点是数组。
如,int* pa[8]声明了一个数组,该数组的每一个元素都是int型的指针
函数指针和指针函数
- 函数指针
是指向函数的指针变量,即重点是一个指针。
格式:函数返回值类型 (*指针变量名)([形参列表]);
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
//或者使用下面的方法将函数地址赋给函数指针:
f = &func;
//赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
作用:
1.一般用函数指针调用函数。
2.用作函数的形参。
- 指针函数
就是指针的函数,表示是一个函数,函数返回类型是某一类型的指针。
格式:返回值类型 *函数名([参数列表])
int* f(int x,int y);