C-整数的动态数组错误(代码: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中,我收到一个"常数值错误",要求我用常数值替换[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));

相关内容

  • 没有找到相关文章

最新更新