C中1D和2D阵列尺寸的比较

时间:2016-07-07 21:31:32

标签: c

在C中,像int a[4]这样的数组创建了5个位置来存储整数,包括a[0]a[4]

但是像int a[2][2]这样的2D数组只生成四个位置,而不是3 * 3 = 9个位置。这是什么原因?

2 个答案:

答案 0 :(得分:3)

您对1D阵列的理解不正确。 int a[4]保留4整数而非5整数的位置。

即。 int a[4]a[0]a[1]a[2]a[3]预留了内存。

对于2D数组,总元素由num of rows * num of columns给出,因此是a[2][2]包含4个整数。所以它为4个整数保留了内存。

答案 1 :(得分:1)

无效前提:在C中,数组int a[4]创建4个位置,而不是5.如果之后使用a[4],则通过缓冲区溢出调用未定义的行为。 2D数组行为与预期一致。

相关问题