若 int a[3][4];则数组元素的非法引用是( )。
A、a[0][2*1] B、a[1][3] C、a[4-2][0] D、a[0][4]
理论上[0][4]是越界的,但是在C语言中二维数组在内存中是连续存储的。这意味着 a[0][4] 实际上是访问 a 数组内存布局的第5个位置(从0开始计数),这在内存布局中对应 a[1][0] 的位置。因此,在这里,a[0][4]不会导致编译错误或运行时错误。但是从良好的编程习惯来讲,应该避免这种【依赖于内存布局】的越界访问,因为它可能导致难以发现的bug,并且减少代码的可读性和可移植性。
a[0][4]
a
a[1][0]
数组的列可以为0?
snake 回复 LEK: 可以的
数组下标从0开始,对于int a[3][4],对于元素a[0][4],b表示第一行第五个元素,下标越界。
D
用户登录可进行刷题及查看答案
登录后提交答案