小编Car*_*rlo的帖子

在C中,如果这不是地址常量,那是什么?

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(或类似)中此类常数的官方名称吗?

c c99

4
推荐指数
2
解决办法
772
查看次数

标签 统计

c ×1

c99 ×1