【发布时间】:2020-05-12 16:49:34
【问题描述】:
我想用 0 作为每个数组索引的内容来初始化一个 5x5 数组。但是每当我运行我的代码时,我都会遇到分段错误(核心转储错误)。你能帮我看看我的代码有什么问题吗? 我的代码如下。
#include <stdio.h>
int main()
{
int a[5][5];
int i,j;
for(i=0; i<=5; i++)
{
for(j=0; j<=5; j++)
{
a[i][j]=0;
}
}
}
【问题讨论】:
-
您有一个包含 5 行(索引 0..4)和 5 个列(索引 0..4)的数组,但是您正在访问 6 行(索引 0..5)和 6 个列(指数 0..5)。顺便说一句,您可以使用
int a[5][5] = { 0 };初始化数组。 -
一个 a[5] 数组的索引从 0 到 4。您的循环在
i<=5处停止,因此您尝试获取a[5]-> 越界。使用i<5停止循环。同上j -
你有越界访问:索引范围是从 0 到 4。所以修复条件:
<=5-><5。顺便说一句,为了将整个数组初始化为零,您可以改为:int a[5][5] = {0};.
标签: c arrays multidimensional-array