我正在搞乱多维数组和指针.我一直在看一个程序,它打印出一个简单数组的内容和地址.这是我的数组声明:
int zippo[4][2] = { {2,4},
{6,8},
{1,3},
{5,7} };
Run Code Online (Sandbox Code Playgroud)
我目前的理解是它zippo
是一个指针,它可以保存其他几个指针的地址.默认情况下,zippo
持有指针的地址zippo[0]
,也可以容纳指针的地址zippo[1]
,zippo[2]
和zippo[3]
.
现在,请采取以下声明:
printf("zippo[0] = %p\n", zippo[0]);
printf(" *zippo = %p\n", *zippo);
printf(" zippo = %p\n", zippo);
Run Code Online (Sandbox Code Playgroud)
在我的机器上,它提供以下输出:
zippo[0] = 0x7fff170e2230
*zippo = 0x7fff170e2230
zippo = 0x7fff170e2230
Run Code Online (Sandbox Code Playgroud)
我完全理解为什么zippo[0]
并*zippo
拥有相同的价值.它们都是指针,它们都存储整数2的地址(默认),或者zippo[0][0]
.但是,zippo
共享相同的内存地址又是什么呢?不zippo
应该存储指针的地址zippo[0]
?Whaaaat?