大众信息网

int n ; scanf("%d",&n); int a[n]; 请问一下,以上程序错在哪啊!

关注:200  答案:4  手机版
解决时间 2021-01-09 02:35
int n ; scanf("%d",&n); int a[n]; 请问一下,以上程序错在哪啊!
最佳答案
注意这是编译程序,不是解释程序,在编译时,n的值是不确定的,这样a的空间就没有办法确定,因此,是不能这样定义数组的,如果确实需要使用一个变化的大小,可以使用堆进行分配,例如:int *a=new sizeof(int)*n; 使用完成后注意释放。
全部回答
C不许许对数组的定义做动态定义,及数组的大小不依赖于程序运行过程中变量的值,这里的n是变量,所以是错误的。
不允许这样定义,你可以用一个预定义来定义n,如#define n 10 这样就可以定义int a[n];忘采纳!

scanf函数中只能放占位符不能加入转义字符

scanf("%d",&a);

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!