评论会员:Stefan_Lang 时间:2012/02/06
这里是你的数组的内存布局:
{C}以你的数组的元素0分,1 [0],以及[0] [0],让您得到相同的值这两种表达方式。
什么是混淆你的是,虽然A [0],A [1]和[2]语法作为控股(常数)变量的指针治疗,有没有实际持有这些指针变量的值的内存。相反,他们持有的价值是来自在变量中存储的地址
评论会员:游客 时间:2012/02/06
CPallini:由于dereferecing数组名([0],就像是一个数组名),给出了相同的结果则数组名称本身,即数组的基地址。这是众所周知(怪异?)功能的C和C:查克・奥图尔
您的期望,[0]和[0,0]同样的法律,以检索的第一个值数组的元素是不正确的。
因为您正在使用一个多维数组,当你使用一个单一的维度语法引用它,你不会在适当的数组项,你正在开始的第二维数组的地址。两个实验会澄清这一点。
第一,而不是打印出来的价值,尝试使用它,看您收到的错误消息。
unsigned int foo = a[0];
error C2440: 'initializing' : cannot convert from 'unsigned int [3]' to 'unsigned int'
的
其次,改变计划,打印出的其他指数,这将告诉你一个[0],A [1],[2]通过指针踏着的阵列,而不是数组本身的数据。
{体C3}