1 2 3 4 Main.c: In function ‘main’: Main.c:6:2: error: variable-sized object may not be initialized int c[n][m]={}; ^ 辅助解释:
时间: 2024-09-24 13:02:36 浏览: 49
Strategies for small and medium-sized U.S. businesses investing in China: Lessons from Taiwanese companies
这个错误信息表明你在`main.c`文件的`main`函数中的某个地方尝试对一个大小未确定(variable-sized)的数组`c[n][m]`进行了初始化。在C语言中,动态大小的数组,即数组长度n和m不是常量表达式,不能在声明时直接初始化。
例如,当你试图像这样声明和初始化:
```c
int n = 5, m = 7; // n和m的值在运行时才确定
int c[n][m] = {}; // 这里是不允许的,因为编译器不知道数组的确切大小
```
为了修复这个问题,你需要在初始化之前先动态地分配内存。你可以使用`malloc`或`calloc`函数,例如:
```c
int *row指针;
if (!(row = malloc(n * sizeof(int)*m))) {
// 处理内存分配失败的情况
}
// 现在row指向了一个足够大的连续内存区域
for (int i = 0; i < n; i++) {
row[i*m] = {0}; // 初始化每一行
// 或者
for (int j = 0; j < m; j++) {
row[i*m + j] = 0;
}
}
// 使用完后别忘了释放内存
free(row);
```
记得处理可能出现的内存分配失败情况,并在适当的时候释放内存。
阅读全文