1.指向数组元素的指针
int a[2];
a[0] = 1; a[1] = 2;
int *p;
p = &a[0];//把a[0]元素的地址赋给指针变量p,即p指向数组第0号元素
因为数组名也就是数组首地址,所以
p = &a[0];和p = a;是一样的
定义指针变量时候也可以赋初值,这两行等价
int * p = &a[0];
int * p = a;
int a[2] a[0] = 1; a[1] = 2; int *p; p = &a[0]; //引用一个数组元素,目前由于以下几种方法: a[i],p[i],*[p+i],*(a+i)
2.指针数组和数组指针
int * p[10]这是指针数组,首先这是个数组,数组里有10个元素,每个元素都是一个指针,每个元素里面是这样的int*
数组指针int (*p)[10] ,表明的是这个是个指向数组的指针,那么该指针变量存储的地址必须是数组的首地址,p是一个指针,指向一个int[10]的数组,每个数组元素是一个int类型的变量
数组指针和指针数组的区别 - hongcha_717 - 博客园 (cnblogs.com)
3.指向指针的指针
char ** p 定义一个指向“字符串指针变量”的指针变量