【发布时间】:2014-05-01 18:43:43
【问题描述】:
通过 knr,我已经达到了多维数组。
我想知道几件事:
首先。
假设我初始化以下数组
int a[2][4] = {{1,2,3},{4,5,6}};
现在,我将其理解为留出 2 个 4*sizeof(int) 字节的连续内存块。好吧,那么在我看来,这只是一种很好的方式来搁置乘法定义的内存。所以...为什么以下不正确:
int a[8] == int[2][4]
第二,当我去的时候,
int a[2][3] = {{1,2,3},{2,3,4}};
为什么这次尝试失败了
a[5] = 22;
如果多维数组不仅仅是一个连续的内存块,那么它是什么?
【问题讨论】:
-
int a[2,3]不会编译。 -
captaincurrie,也许您应该编辑您的问题详细信息并修复 int a[2, 3]? (由 alk 发现)
-
int a[8] == int[2][4]也不合法 C -
int a[2,3]与int a[3]相同,很遗憾。 -
@DietrichEpp:我也想过这个,但是快速测试显示至少 gcc 4.7.2 拒绝它,错误为
expected ‘]’ before ‘,’ token。
标签: c arrays multidimensional-array