C-动态整数数组错误(代码:Blocks / Visual Studio)

时间:2018-11-17 13:36:29

标签: c visual-studio constants codeblocks dynamic-arrays

有人可以解释为什么我在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中的工作方式不同。

1 个答案:

答案 0 :(得分:-1)

您要声明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));