Code Bye

小白关于在不同编译器中使用数组的一个简单问题,求指导答,谢谢

小白编译了一个简单程序,如下
#include<stdio.h>
int main()
{
int n,j,i,t=1;
printf(“请输入n(n为正整数):\n\n”);
scanf(“%d”,&n);
int a[n][n]={0};
for(i=0;i<n;i++,t=1)
{
for(j=0;j<n;j++)
{
a[i][j]=t;
if(t<i+1) t++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) printf(“%-3d”,a[i][j]);
printf(“\n”);
}
return 0;
}
在DEV c++中是可以成功运行并得出正确答案的,但是在VC++6.0中却出现了ERROR信息,如下
d:\se\c\p193 (3).cpp(7) : error C2057: expected constant expression
d:\se\c\p193 (3).cpp(7) : error C2466: cannot allocate an array of constant size 0
d:\se\c\p193 (3).cpp(7) : error C2057: expected constant expression
d:\se\c\p193 (3).cpp(7) : error C2466: cannot allocate an array of constant size 0
d:\se\c\p193 (3).cpp(7) : error C2087: “<Unknown>” : missing subscript
执行 cl.exe 时出错.
P193 (3).obj – 1 error(s), 0 warning(s)
有人说这是在VC++6.0中不能使用
int n;
printf(“请输入n(n为正整数):\n\n”);
scanf(“%d”,&n);
int a[n][n]={0};
这样的定义,原因是这样的n是变量,在c中定义数组不能使用变量,是这样的吗?求高手解答,谢谢。
解决方案

20

C99标准支持可变长数组,不过VC不支持C99标准,所以不能用

20

vc++6.0是c89。建议题主用c99标准的编译器。这样可以避免很多小问题。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明小白关于在不同编译器中使用数组的一个简单问题,求指导答,谢谢