数组指针:即指向数组的指针 int (*p)[n]
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨越n个整型数据的长度。
指针数组:即用于存储指针的数组,也就是数组元素都是指针 int *p[n];
[]的优先级高,先于p结合成为一个数组,再由int* 说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素。这里执行p+1时,则p指向下一个数组元素。
这样赋值是错误的p=a;因为p是个不可知的表示,只存在p[0]、p[1]等等。而且它们分别是指针变量可以用来存放变量地址。但可以这样*p=a; 这里
*p表示指针数组第一个元素的值,a的首地址。
指针函数, 即返回值为指针的函数, 本质上是一个函数
格式: 类型标识符 *函数名(参数表)
int *f(x,y);
函数指针, 即指向函数的指针, 本质上是一个指针
格式:类型说明符 (*函数名)(参数)
int (*f) (int x);