二维数组指针

来源:互联网 发布:淘宝网图片空间在哪 编辑:程序博客网 时间:2024/05/02 22:39
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是一样的。

最后的输出结果为: