1、指针常量/常量指针
指针常量:指针本身是常量,它的值(即地址)不可修改,但是可以对它所指向的内容进行修改如:int *const p;
常量指针:指向常量的指针,它所指向的地址中的内容是不可修改的。如const int *p;
另:常量指针常量:指向常量的指针常量,它所指向的地址不可修改,并且地址的内容也不可修改。如const int *const p
2、指针数组/数组指针
指针数组:存放指针的数组,即这个数组中的数据全都是指针。如:int *(p[])
int *p[3];//这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
数组指针:指向数组的指针,如:int (*p)[]
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][]
附:优先级:()>[]>*