【发布时间】:2011-06-08 18:21:00
【问题描述】:
简单但棘手的问题:
void f() {
static int a[3] = {1, 2, 3};
...
这里的静态是什么?指向数组还是整个数组的指针?
谁能指出 C 标准中的定义?
谢谢!
【问题讨论】:
-
你指的是什么指针?
-
我指的是“a”指针(&a[0])。
-
&a[0]在几乎所有上下文中扩展为&a[0]的表达式不是左值。它是地址而不是指针。只定义了一个标识符,这就是数组。由于没有其他标识符,所以没有什么可以应用static。 -
似乎即使这里没有 static 关键字,数组 a 也不会因不同的调用而改变。是标准还是编译器特定?