我正在学习指针和多维数组。
我知道它们是由几个像这样一个接一个排列的子阵列组成的。
int C [3] [2] [2];
在此示例中,C = 800这是指向3整数数组的第一个数组元素的指针。
我不明白的是如何解除引用数组。
在正常情况下* C表示获取存储在地址800处的值。所以* C = 2
但是这里* C将是800.我理解这一点。这是一个指向里面2个整数数组的指针。
但编译器如何理解?关于存储在内存中的其他数组的信息在哪里?
屏幕截图来源 - mycodeschool youtube channel
答案 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]