小编Ich*_*i10的帖子

C多维数组中的指针地址

我正在搞乱多维数组和指针.我一直在看一个程序,它打印出一个简单数组的内容和地址.这是我的数组声明:

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?

c memory arrays pointers multidimensional-array

28
推荐指数
3
解决办法
4万
查看次数

标签 统计

arrays ×1

c ×1

memory ×1

multidimensional-array ×1

pointers ×1