Ani*_*rya 5 c pointers multidimensional-array
在这里,我对输出有一些疑问.
为什么输出相同?
int (*r)[10];
printf("r=%p *r=%p\n",r,*r);
return 0;
Run Code Online (Sandbox Code Playgroud)
平台 - GCC UBUNTU 10.04
因为数组的名称衰减为指向其第一个元素的指针.
int (*r)[10];
Run Code Online (Sandbox Code Playgroud)
是指向10整数数组的指针.
r给你指针本身.
必须取消引用指向数组的指针才能访问每个元素的值.
所以与你的想法相反,**r并没有*r让你访问数组中的第一个元素.
*r给出整数数组中第一个元素的地址,与...相同r
需要注意的是:
数组不是指针
但是当涉及数组名称的表达式没有意义时,涉及数组名称的表达式有时会表现为指针.