【发布时间】:2015-09-18 09:20:51
【问题描述】:
我有以下代码片段
#include <stdio.h>
int a[4];
int b;
struct test {
int *ptr;
int val;
};
struct test test_array[] = {
{
a, //Don't understand here
b //compile error
}
};
int main() {
struct test ha = test_array[0];
ha.ptr[0] = 10;
printf("%d\n", ha.ptr[0]);
return 0;
}
从以下链接,我知道为什么会发生编译错误。 C - initializer element is not constant
但是就是不明白为什么静态存储数组就可以了?
谢谢
【问题讨论】:
-
抛开语法问题不谈,当您认为用另一个未初始化变量的值来初始化一个变量是有意义的时候,您在想什么?
-
@Lundin 我想这里的这个来源不应该是完成版。
-
@Lundin:具有静态存储持续时间的变量总是初始化。
-
@KerrekSB 我的评论只是呼吁常识。当然,您认为写
val=b将val初始化为零是没有意义的,只是因为您知道b,具有静态存储持续时间,被隐式初始化为零?而不是一开始就写val=0;。 -
其实我对b犯了错误,我只是尝试是否数组[即'a'] 是否可以。