c - 为什么我的代码给出分段错误(核心转储)错误?
问题描述
我想用 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)。您需要调整循环的边界。
#define ROWS 5
#define COLS 5
int a[ROWS][COLS];
for (int i=0; i<ROWS; ++i) {
for (int j=0; j<COLS; ++j) {
a[i][j] = 0;
}
}
也就是说,您可以简单地使用以下内容来初始化数组:
#define ROWS 5
#define COLS 5
int a[ROWS][COLS] = { 0 };
请注意,我使用了名称,而不是在任何地方对数字进行硬编码。这更具可读性并且更不容易出错。
推荐阅读
- azure-devops - Azure DevOps:将团队成员添加到新团队/区域
- python - 错误 NOT NULL 约束失败:使用 3 个模型(外键)自定义表单 django-all-auth
- c - gcc-10.0.1 特定的段错误
- java - 从 SwingWorker 调用 done 方法时是否必须使用 Runnable.run
- java - 如何在for循环中向空字符串添加值?
- android - 出现错误说 - “条目名称 'res/layout/test_toolbar.xml' 碰撞”,同时创建签名的 apk
- java - MappedByteBuffer(在 Android Studio 中)构造函数损坏(超级构造函数损坏)
- google-cloud-firestore - 了解 Firebase Cloud Firestore 计费
- python - 如何将 csv 文件格式加载到 jupyter notebook?
- android - 自Android Q以来,如何将文件保存到具有范围存储的外部存储中,同时与android中的旧api级别兼容?