C - 动态整数数组错误(代码:Blocks / Visual Studio)
C - Dynamic array of integers error (Code:Blocks / Visual Studio)
有人可以解释为什么我在 Visual Studio 17 中收到此代码的错误 运行,但在 Code:Blocks 中却没有吗?
int n,m;
int main (){
printf("n");
scanf("%d", &n);
printf("m");
scanf("%d", &m);
int tab[n][m]; // Return error
}
在 VS 中,我得到一个 'constant value error' 要求我用常数值替换 [n] 和 [m] 整数,但在 Code:Blocks 中我没有得到任何错误。
当我首先使用 malloc() 函数为 'tab' 分配内存时,它在 VS 中工作,但我想知道为什么我的工作方式与 Code:Blocks.
中的不同
您正在声明 variable-length array
。这是代码块中 C
语言的一个特性,一些编译器支持它作为扩展。 Visual Studio
没有;
int n,m;
int main (){
printf("n");
scanf("%d", &n);
printf("m");
scanf("%d", &m);
int *tab[m];
for (i=0; i<m; i++)
tab[i] = (int *)malloc(n * sizeof(int));
有人可以解释为什么我在 Visual Studio 17 中收到此代码的错误 运行,但在 Code:Blocks 中却没有吗?
int n,m;
int main (){
printf("n");
scanf("%d", &n);
printf("m");
scanf("%d", &m);
int tab[n][m]; // Return error
}
在 VS 中,我得到一个 'constant value error' 要求我用常数值替换 [n] 和 [m] 整数,但在 Code:Blocks 中我没有得到任何错误。 当我首先使用 malloc() 函数为 'tab' 分配内存时,它在 VS 中工作,但我想知道为什么我的工作方式与 Code:Blocks.
中的不同您正在声明 variable-length array
。这是代码块中 C
语言的一个特性,一些编译器支持它作为扩展。 Visual Studio
没有;
int n,m;
int main (){
printf("n");
scanf("%d", &n);
printf("m");
scanf("%d", &m);
int *tab[m];
for (i=0; i<m; i++)
tab[i] = (int *)malloc(n * sizeof(int));