本文共 512 字,大约阅读时间需要 1 分钟。
int main(){ char a[3][3]={'1','2','3','4','5','6','7','8','9'}; char (*p)[3]; p=a; PF("%c %c\n",**p,**p+1); PF("%c %c\n",**a,**a+1); PF("%p %p %p %p\n",*p,*p+1,p,p+1); PF("%p %p %p %p\n",*a,*a+1,a,a+1); return 0;}
如上所示,假设a 是二维数组,p是一个数组指针;
1.对p来说,指向的是二维数组的首元素(一个一维数组),对其++,可以使其指向二维数组里的下一个元素(一维数组),对其解引用(*p)就可以使其指向这个一维数组的首元素(一个字符),再++,可以使其指向这个一维数组的另一个元素(一个字符),然后再解引用(**p),可以得到当前指向的元素的值(一个具体的char值)。
2.对a来说,因为数组名也就是数组的首元素(一个一维数组)的地址,可以使其指向二维数组里的下一个元素(一维数组),对其解引用(*p)就可以使其指向这个一维数组的首元素(一个字符),跟p是一样的。
最后的输出结果为: