Gab*_*721 2 c arrays initialization declaration variable-length-array
这是我写的:
const int MAX=100;
int main (){
int notas [MAX]={0};
Run Code Online (Sandbox Code Playgroud)
编译器说如下:
[错误] 可能无法初始化可变大小的对象
[警告] 数组初始值设定项中的元素过多
当我用 写作MAX时#define MAX 100,它起作用了。但我不明白这样做有什么问题?
在这种情况下
const int MAX=100;
Run Code Online (Sandbox Code Playgroud)
不创建编译时常量,因此数组被视为VLA。根据定义,VLA 无法初始化,因此会出现错误。
另一方面,#define MAX 100是一个预处理器宏,基于文本替换属性,它导致编译时常量值为100,则该数组不是 VLA,可以按照初始化规则进行初始化。