C语言中的二维数组的为什么横可以为0,列不可以为0啊?

如题所述

这个表达有些问题:
C语言中的二维数组行和列的下标都是可以为0。
例如 a[0][1] 或者 a[1][0] 或者a[0][0]都是有效的数组元素。
只有在定义二维数组的时候有如下的限制:
不可以第⼀维和第⼆维的长度都不指定。
⾄少指定第⼆维的长度。原因:⼀维数组存放在⼀段连续的内存中,⼆维数组的维度是逻辑上的概念,在计算机中所有的数据都在一行存储。
因为无法确定每一行的长度,地址是a+x*m+n,其中x是每一行的长度,这个值不固定无法寻址。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-25
在 C 语言中,二维数组的行索引从 0 开始,而列索引从 1 开始。因此,可以使用行索引来访问二维数组的第一行,而使用列索引来访问二维数组的 第一列。假设二维数组名为 array,则可以使用以下代码访问数组的第一行和第一列:
Copy codeint array[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};int x = array[0][0]; // 访问数组的第一行第一列,x 的值为 1 int y = array[0][1]; // 访问数组的第一行第二列,y 的值为 2

需要注意的是,在访问二维数组时,如果列索引为 0,则表示访问的是二维数组的 第一行,而不是第一列。因此,行索引可以从 0 到 n-1,而列索引可以从 1 到 n。如果列索引为 0,则表示访问的是二维数组的空行,这种情况下访问到的内存地址可能是随机的,可能会导致程序崩溃或其他错误。
相似回答
大家正在搜