2013-06-25 195 views
4

我正在瀏覽一些C代碼。其中有些難以理解。例如,下列分配做什麼:瞭解C語言中的語句

MY_TYPE my_var[3]={0}; 

MY_TYPE是一些定點算術類型。我還沒有遇到與[]括號相關的變量和與{}左右的值。

這太容易了,我想。那麼,什麼是優勢定義

my_type my_var[3]={0}; 

在這個的:

my_type my_var[3]; 

回答

4

它創建MY_TYPE類型的數組my_var是大小3並初始化爲全0(我懷疑MY_TYPE是某種整數類型)。請注意,其他初始化只需要一次初始化即可。

另外請注意,如果你聲明全局數組而不是在一個塊內,那麼它將被自動初始化,並且這個MY_TYPE my_var[3];就足夠了。

+1

我刪除了我的答案...你說的是正確的...我不知道的一點細微差別,謝謝你糾正我。我認爲這將是一個很好的補充,在這裏你的答案... – Jimbo

+0

哈哈謝謝,我只是想自己也添加它:) – Nobilis

+2

第二段+1。 – haccks

4

這3個元素的數組都初始化爲0

2

MY_TYPE my_var[3]={0};陣列my_var初始化爲:

my_var [0] = 0; my_var [1] = 0; my_var [2] = 0;

2

它的3個元素的一個維數組,初始化爲0。從技術上講,在初始化數組的一個元素,所有其他的元素自動初始化爲0。

SO 3個元素與3個指標:

my_var[0]=0; 
my_var[1]=0; 
my_var[2]=0; 

My_TYPE可以是int,char或任何其他數據類型。 我希望這可以幫助。

閱讀關於陣列的更多的位置:http://www.cplusplus.com/doc/tutorial/arrays/

1

my_var[3]MY_TYPE類型的變量,其可以存儲相同類型的三個值(以及稱爲陣列)。 大括號{}在這裏用作初始化程序my_var[3] = {0}將其第一個元素初始化爲0。其中的第一個元素被自己初始化爲零。

MY_TYPE my_var[3]; 

在內存中爲MY_TYPE保留三個空間。鑑於;

MY_TYPE my_var[3] = {0}; 

將所有這三個空格初始化爲0

1

使用

my_type my_var[3]={0}; 

my_type my_var[3]; 

的優點是,第一條語句初始化數組。如果沒有初始化器,你的數組將包含垃圾值(以前發生在那些內存位置的事情)。

+1

「沒有初始化程序,你的數組將包含垃圾值」 - 除非它是全局聲明的。 – Nobilis

+0

@Nobilis好點,謝謝。 –

+0

沒問題,當涉及默認初始化的內容時,事情可能會有點棘手,什麼不是。 – Nobilis