我有以下代碼件Ç初始化器元件是不恆定的[這是什麼陣列和變量之間的差]
#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
但只是不明白爲什麼靜態存儲陣列可以嗎?
由於
在C全局變量的
語法問題不談,當你認爲用另一個未初始化變量的值初始化一個變量時,你在想什麼? – Lundin
@Lundin我認爲這裏的來源不應該是最終版本。 –
@Lundin:靜態存儲持續時間變量*總是*初始化。 –