#include <stdio.h>
int main() {
int arr[10][10] = {0};
printf("arr is %p\n", arr);
printf("*arr is %p\n", *arr);
printf("&arr[0][0] is %p\n", &arr[0][0]);
return 0;
}
输出的结果为:
arr is 0x7fffedc99d40
*arr is 0x7fffedc99d40
&arr[0][0] is 0x7fffedc99d40
这里有个困惑,如果arr和*arr值是一样的,那是不是就意味着这样一个事实:arr内存放着一个地址0x7fffedc99d40,我通过*arr的方式去寻找0x7fffedc99d40这个地址对应的存储区,把里面的东西取出来,发现0x7fffedc99d40这个存储区里放的也是个地址,地址是0x7fffedc99d40,那如果我再做一次寻址,即**arr,我找到的还是存储区0x7fffedc99d40,它里面放的也是地址0x7fffedc99d40,但实际上**arr对应的存储区放的应该是值。
现在问题是,0x7fffedc99d40这个存储区里到底放的应该是什么?