int** c = (int**)malloc(sizeof(int*) * n); for(int i=0;i<n;i++) { int* c[i] = (int*)malloc(sizeof(int) * m); }vs2022报错i不为常量怎么解决
时间: 2023-11-22 22:05:21 浏览: 146
解析一个有关sizeof用法的题目--sizeof(i++)
在这段代码中,变量i是一个变量,而不是一个常量。在C语言中,数组的长度必须是一个常量,因此编译器会报错。要解决这个问题,你可以使用动态内存分配来创建一个动态数组,这样就可以避免这个问题。你可以使用类似于引用和引用中的方法来动态分配内存。具体来说,你可以使用以下代码来创建一个动态数组:
int** c = (int**)malloc(sizeof(int*) * n);
for(int i=0;i<n;i++)
{
c[i] = (int*)malloc(sizeof(int) * m);
}
这将创建一个大小为n*m的二维数组c。注意,你需要在程序结束时使用free()函数释放动态分配的内存,以避免内存泄漏。
阅读全文