gpt4 book ai didi

c - 解释输出(C 中的二维数组)

转载 作者:行者123 更新时间:2023-11-30 21:21:39 24 4
gpt4 key购买 nike

我编写的代码如下:

#include<stdio.h>
int main() {
int arr[3][2]={{1,2},{3,4},{5,6}};
printf("%d %d %d",arr[0][3],arr[1][2],arr[2][0]);
return 0;
}

(GCC)输出是:

4 5 5

请解释此输出。根据我的方法,代码应该抛出错误,因为没有索引为 3 或 2 的列。

最佳答案

这是有缺陷的代码。您的数组边界超出范围。然而,他们显然仍然引用了真实数据。如果您有一个多维数组arr[NUMROWS][NUMCOLS],该数组仍然连续存储在内存中。要访问元素 arr[x][y],您需要查找位于 x*NUMCOLS+y 位置的元素。对于您的问题,arr 在内存中的存在形式为 1 2 3 4 5 6。 arr[0][3] 指的是 索引 0*2+3 处的元素,即 4 (记住数组的索引为 0)。同样,arr[1][2] 对应于1*2+2 = 4,即5。最后arr[2][0] = 2*2 + 0=4,所以你再次得到5

关于c - 解释输出(C 中的二维数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22601581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com