指向整数数组的指针

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

Alo*_*ave 7

因为数组的名称衰减为指向其第一个元素的指针.

   int (*r)[10]; 
Run Code Online (Sandbox Code Playgroud)

是指向10整数数组的指针.
r给你指针本身.

必须取消引用指向数组的指针才能访问每个元素的值.
所以与你的想法相反,**r并没有*r让你访问数组中的第一个元素.
*r给出整数数组中第一个元素的地址,与...相同r

需要注意的是:
数组不是指针

但是当涉及数组名称的表达式没有意义时,涉及数组名称的表达式有时会表现为指针.