首先,为了方便记忆
把指针数组改为,指针的数组!
把数组指针改为,数组的指针!
int *p[4]; //定义一个指针数组,该数组中每个元素是一个指针,每个指针指向哪里就需要程序中后续再定义了。
int (*p)[3] 表示一个指针,指向一个含有三个元素的数组;
p=s,表示p指向了数组s的第一行,
p+1 表示现在指针指向了数组s的第二行;
*(p+1)表示数组s第二行第一个元素的地址;
*(p+1)+1 表示数组s第二行第二个元素的地址;
将在之后遇到题目再增加:
//1
int a[5] = {1,2,3,4,5};
int *p=(int *)(&a+1);
printf("%d",*(p-1));
//解释:&a实际上是数组的指针,so &a+1 是指向数组指针的第二行的第一个元素,(int *)(&a+1)把数组指针强制转换为指向第二个数组首元素的指针。