二维数组的输入i的下标问题

for(i = 1;i < row;i++){ 这句话不应该是for(i = 0;i < row;i++)怎么从1开始

7个回答

这不好说,也许第一行是表头,或者作为参照数据,比如计算两行的差之类的,需要忽略。

起始值根据需要来设定,i=1时第一行数据不输入。如
#include

int main(void)
{
int i = 0;
int j = 0;
int array[3][3] = {0}; //如果没有全部初始化为0,第一行输出则为一个不确定的值。根据编译器的情况而定,有的编译器会自动给数组初始化为0.
for(i= 1;i {
for(j = 0;j {
array[i][j] = i+j;
}
}
for(i= 0;i {
for(j = 0;j {
printf("%d",array[i][j]);
}
printf("\n");
}
return 0;
}
Output:
000
123
234
如果没有初始化//codepad在线编译器下编译
#include

int main(void)
{
int i = 0;
int j = 0;
int array[3][3] = {0};
for(i= 1;i<3;i++)
{
for(j = 0;j<3;j++)
{
array[i][j] = i+j;
}
}
for(i= 0;i<3;i++)
{
for(j = 0;j<3;j++)
{
printf("%d",array[i][j]);
}
printf("\n");
}
return 0;
}
Output:
-143098616 -143100480 -143207760
123
234
]

是否从1或者其它数字开始都没有关系的,关键在于循环中的代码是如何实现的。
例如:循环中可以使用 i - 1 做下标,这样从 1 开始就是正常的 。

和一维数组同样的道理,第一个元素的地址为数组的头地址,相当于base+0,这样向下访问一直到 base+num-1的地址。二维的与一维是同样的思路

从 i=1 开始,就是从第二个元素开始处理,第一个元素不处理。i<row,保证循环中下标不会越界,写成i<=row-1也是可以的。
没有硬性规定for循环中 下标一定要从i=0开始。 只要下标不越界,代码怎么写都没问题。至于i从什么值开始,什么值结束,这个要看具体的应用场景和业务需求。

能发现这个问题很好,说明你还是适合写代码的
从1开始处理,第0行不处理,肯定是有他的意义的
要仔细分析代码的上下文,应该看出来他为什么不处理第0行
如果分析不出来,就是写代码的人的问题了,问他就可以了

能发现这个问题很好,说明你还是适合写代码的
从1开始处理,第0行不处理,肯定是有他的意义的
要仔细分析代码的上下文,应该看出来他为什么不处理第0行
如果分析不出来,就是写代码的人的问题了,问他就可以了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问