多维数组如何存储在内存中?

时间:2017-06-05 17:15:59

标签: c++ c arrays pointers multidimensional-array

我正在学习指针和多维数组。

我知道它们是由几个像这样一个接一个排列的子阵列组成的。

  

int C [3] [2] [2];

enter image description here

在此示例中,C = 800这是指向3整数数组的第一个数组元素的指针。

所以,我假设有一块内存保留用于存储引用变量C,就像这样 enter image description here

我不明白的是如何解除引用数组。

在正常情况下* C表示获取存储在地址800处的值。所以* C = 2

但是这里* C将是800.我理解这一点。这是一个指向里面2个整数数组的指针。

但编译器如何理解?关于存储在内存中的其他数组的信息在哪里?

屏幕截图来源 - mycodeschool youtube channel

1 个答案:

答案 0 :(得分:0)

当声明静态数组tab [x] [y]时,编译器将使用tab [x * y]并计算正确的偏移量。它不像双指针那样工作,比如char ** tab。在这种情况下,你有一个指针数组,每个指针指向一个char数组。

使用静态数组声明函数时,必须指定除最后一个尺寸之外的尺寸。 例如:

Void fn(char t [4] [5] [6] [])

并且t [x] [y] [z] [a]将被替换为t [x×4×5×6 + y×5×6 + z×6 + a]

相关问题