8.1.3 聚合

const可以用于聚合,你要相信编译器不会真的把一个聚合保存到它的符号表中,所以必须分配内存。在这种情况下,const意味着“不能改变的一块存储空间”。然而,不能在编译期间使用它的值,因为编译器在编译期间不需要知道存储的内容。这样,就能明白下面的代码是非法的:

8.1.3 聚合 - 图1

在一个数组定义里,编译器必须能产生这样的代码,它们移动栈指针来存储数组。在上面这两种非法定义里,编译器给出“提示”是因为它不能在数组定义里找到一个常数表达式。