2014-04-14 40 views
1

初始化我相信我是對的,但只是確保 int c;聲明cc = 5;初始化c等於5, 和 int c = 5;都聲明並初始化c。 我對所有這些都正確嗎?初始化只是變量設置爲正確的第一個值?定義與可變

+0

是的,這是正確的。 –

+0

更正我的朋友 – Alaeddine

回答

3
int c; 

聲明和定義c

c = 5; 

不是初始化,但它分配5c,其具有相同的效果。

初始化器是一個語法結構,是聲明的一部分。賦值是一個不同的語法結構,它或多或少地做了同樣的事情。

此:

int c = 5; 

聲明並初始化c; 5是初始值設定項。

此:

int c; 
c = 5; 

有同樣的效果,但沒有初始化。

(你可以非正式地說,賦值給變量「初始化」,但它這樣做沒有用初始化。)

一種情況的區別是很重要的:

const int c = 5; 

這初始化c5。由於您無法指定const(只讀)對象,因此無法對作業做同樣的事情。

1

所有的陳述都是正確的,但是你缺少一個定義,即定義和聲明之間的區別。

int c;都聲明定義c,但不初始化它。

extern int c;將聲明它,但沒有定義它。 (它不分配存儲空間。)

+1

它比這略微更微妙:'int c;'是*暫定義*。這就是爲什麼'int c; int c = 5;'被接受。 'int c = 5; int c = 2;'由於顯而易見的原因被拒絕,'int c = 5; int c = 5;',因爲它試圖定義'c'兩次。 –

+0

@PascalCuoq,如果你能找到標準的參考,我會修改它並參考標準。我目前找不到它。 – merlin2011

+0

C99 6.9.2:2 .... –

2

初始化是變量初始值的設置,所以你是正確的。

這是第一線斷維基百科文章上初始化:

在計算機編程,初始化爲數據對象或變量的初始值的分配。