数组指针——指针数组
- 数组指针的重点是指针。表示的是一个指针,它指向的是一个数组,例子:
int (*p)[n];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。
如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]
所以数组指针也称指向一维数组的指针,亦称行指针。
-
既然
int (*p)[4];
指向一个一维数组,那么int (&p)[4];
表示p是一个引用,指向一个一维数组。 -
指针数组的重点是数组。表示的是一个数组,它包含的元素是指针。例子;
int* p[n];
[]优先级高,先与p结合成为一个数组,那么p是一个数组名,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。
函数指针——指针函数
函数指针的重点是指针。表示的是一个指针,它指向的是一个函数,例子:
int (*pf)();
指针函数的重点是函数。表示的是一个函数,它的返回值是指针。例子:
int* fun();