我在C中知道我可以做以下事情。在声明之外初始化C数组?
int test[5] = {1, 2, 3, 4, 5};
现在这只是声明数组时才合法。不过,我想知道为什么这是后来不合法?但是后来在这个程序中,执行以下操作是不合法的。
test[5] = {10, 20, 30, 40, 50};
或类似的东西。为什么是这样?我知道这不合法,我不是在抱怨,但是有人能给我一个更为技术性的解释,为什么我不能这样做? (即不要只说C规范不允许它或类似的东西)
我假设它必须做的事情,当内存获取分配在堆栈上的数组,因此在那一点上C可以自动填写我的值,但为什么不能在以后做?
谢谢你们
所以,如果,假设,有人的情况下,在C标准只是不会允许这种(尽管这在技术上是可能的),我们不得不做出一些不同的东西而不是?或者你是不想得到答案?只是想确定。 – 2012-03-05 15:05:33
@NiklasB .:我认为在这种情况下,一个有争议的受过教育的猜测是为了*为什么C语言的设计者决定忽略这个特性将会是一个很好的答案。 – Heinzi 2012-03-05 15:07:54
@Heinzi:哦,我明白了:) – 2012-03-05 15:08:29