numbers如果它不是地址常量,那么在下面的声明中究竟是什么?
int main() {
int numbers[3] = {1,2,3};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
反汇编程序显示,1,2和3动态放置在本地堆栈空间中,而不是整个数组被视为常量.因此,{1,2,3}不具有静态存储持续时间,因此numbers是不一个地址常量,具体根据C99的规范.
C99,第6.6.9节:"地址常量是空指针,指向静态存储持续时间对象的左值的指针,或指向函数指示符的指针......"
但是,numbers++在声明后添加行会导致GCC 4.1.2中出现以下编译错误:
error: invalid lvalue in increment
所以它是常量,但不是地址常量.有人知道C99(或类似)中此类常数的官方名称吗?