C/C++允许用赋值后的变量定义数组长度么?
int n=10;
int array[n];
这个样子对么?我看书上说定义数组长度时必须是常量或常量表达式,但我用上面的语句写C语言程序也没出错,请问这应该怎么解释和理解?
只要[ ]中的最后结猛敬袜果是一个确定枝激的值(正整数)就可以。常量或常量表达式的最后结果都是一个确定的值……n虽然是一个变量,但已经赋了一个值稿空10,是确定的,所以也是可以的。如果n未赋值,程序会出错。
这样是非法的。因为n是变量也就是说,n可以为赋任何值,这样就搜此违背了静态备漏禅空间分配的原则,所以数组长度时必仿尘须是常量或常量表达式。
理论和实际上数组长度颤顷都应该是常量,或者常量仿吵表达式,因为这样编译器才能在预编译的时候进行内存大小的分配。不知你所谓茄大陆的没有出错是什么意思,贴出源码来看看