虽然没有创建,但是变量在那些位置编译器已经安排好了,自动变量和全局变量的位置是编译器已经指定的。并且有相对地址~
ISO/IEC 9899:2011 常量表达式的定义: 6.6.2:常量表达式在程序翻译期间求值(而不是在运行时求值),它可以出现在任何需要一个常量的地方。 变量pa的初始化器要求是一个常量表达式,而& a是常量表达式。 6.2.1.4:出现在任何块或者(函数、宏)参数之外的标识符具有文件作用域。 所以,a、pa和main具有文件作用域。 6.2.2.5:如果一个代表变量的标识符具有文件作用域而且没有任何存储类指定符,则它是外部链接的。 所以,a、pa和main都是外部链接的。 6.2.4.1:一个具有外部链接的标识符所代表的变量具有静态存储期。 所以,a、pa是具有静态存储期的变量。 6.6.9:指向一个静态存储期的变量的指针是一个常量表达式。 表达式& a的类型是指针,指向一个具有静态存储期的变量a,所以, & a是常量表达式。
69,373
社区成员
243,080
社区内容
加载中
试试用AI创作助手写篇文章吧