【发布时间】:2019-09-11 15:09:59
【问题描述】:
正在尝试下面这样的一段代码,发现事情并没有像预期的那样在数组索引中存储值。请检查下面的代码 sn-p 和输出
#include <stdio.h>
int main(void)
{
int a[2][2];
int i,j,count_ld_x=0,count_rd_x=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("Inputing value for the element:a[%d][%d]",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
}
}
输入输出:-
./main
元素的输入值:a[0][0]0
元素的输入值:a[0][1]1
元素的输入值:a[0][2]2
元素的输入值:a[1][0]3
元素的输入值:a[1][1]4
元素的输入值:a[1][2]5
元素的输入值:a[2][0]6
元素的输入值:a[2][1]7
元素的输入值:a[2][2]8
a[0][0]=0
a[0][1]=1
a[0][2]=3
a[1][0]=3
a[1][1]=4
a[1][2]=6
a[2][0]=6
a[2][1]=7
a[2][2]=8
困惑:-我将 a[0][2] 与 2 存储在一起,而同一位置的 o/p 是 3。你能解释一下是什么问题吗?
【问题讨论】:
-
当数组声明为
[2]大小时,索引为0 和1。2超出范围。 -
将所有
<3更改为<2,或将数组更改为a[3][3]。 -
每个人学习 C 都会产生这个错误,所以我建议阅读你的初级 C 编程书籍中关于数组的章节。关键是要理解声明数组大小和执行数组访问是两件不同的事情,后者使用 0 索引。
标签: c arrays multidimensional-array