2014-01-21 47 views
-1

不編譯:的extern數組在C沒有大小

int a[]; 

編譯:

extern int a[]; 

不編譯(實在找不到的sizeof):

printf("%lu\n", sizeof(a)/sizeof(int)); 

所以問題:

  1. 爲什麼有可能創建extern數組。
  2. 分配多少內存?

問題的原因 - http://users.dcc.uchile.cl/~rbaeza/handbook/algs/4/444.sort.c

extern int maxfiles, maxruns[], actruns[]; 
for (i=0; i<=maxfiles; i++) maxruns[i] = actruns[i] = 0; 

它是正確的嗎?

+1

外部變量需要鏈接.... – pinkpanther

+0

可能的重複[數組的外部延遲?](http://stackoverflow.com/questions/3071890/external-delaration-for-an-array) –

回答

2

1.)您還沒有創建extern數組。相反,你已經聲明存在一個數組,並且它是在其他地方創建的(外部)。它創建的地方確實有一個特定的大小。

2.)因爲您還沒有創建數組,所以沒有大小被分配給它。 (見#1)。相反,該數組是在另一個文件/模塊/組件(外部)中創建的,並且這是一個該數組存在的聲明,並且可以在此處訪問。