数组 怎么变成未知的啦

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:58:00
现定义个数组int emu[]={100,50,20,10,5,2,1}
以及它的元素个数int arra_size =sizeof(emu)/sizeof(*emu);
要在另一个数组中使用它的个数int num[arra_size];

编译的时候为什么通不过,以下是出错的结果,共3条都是指向int num[arra_size]的:
1.expected constant expression
2. cannot allocate an array of constant size 0
3. 'num' : unknown size

好像是说数组未知长度,可是那个arra_size不是已经是个明确的数了吗(arra_size=7)

因为arra_size是变量,只有程序运行的时候执行到arra_size =sizeof(emu)/sizeof(*emu);这条语句的时候才知道它等于7,编译的时候是不知道的,所以编译器不知道给num数组分配多大空间,要么用常量分配数组,要么使用动态分配。