2014-04-16 204 views
1

我正在學習編程類中的2D數組。我的老師在不解釋的情況下使用了一些東西,我很好奇爲什麼我們使用它。由於它與一個符號有關,我不知道如何谷歌或搜索它,因爲這些符號用於搜索本身。不管怎麼說代碼是這樣的:使用圍繞變量C++的花括號(大括號)

int small[26]= {0}, large[26]={0}, i;

爲什麼在大括號需要圍繞0的?

該程序代碼是檢查文件的一部分,查找字母表中的每個字母並單獨計數。

+0

不要問爲什麼需要大括號的初始化,您應該問爲什麼需要'0'。事實並非如此。這裏有一個初始化器,它使用指定的值(如果有的話)初始化數組的相應項,並將數組的其餘部分初始化爲零(或該類型的默認值)。 –

+0

好的,仍然,他們的目的是什麼? – Skathix

+0

這些不是二維數組,只是簡單的C風格數組。 – blackbird

回答

2

它可以寫成更簡單

int small[26]= {}, large[26]={}, i; 

大括號意味着在這種情況下,數組的初始化列表。

讓假設例如要定義與元件1,2,3,4的陣列,5.

你可以寫

int a[5]; 

a[0] = 1; 
a[1] = 2; 
a[2] = 3; 
a[3] = 4; 
a[4] = 5; 

但是C++允許分配一個數組中的元素當它被定義時。等價記錄將顯示

int a[5] = { 1, 2, 3, 4, 5 }; 

如果初始值設定項小於數組大小,則其餘元素將被初始化爲零。例如

int a[5] = { 1, 2 }; 

在這種情況下一個[0]將等於TP 1 [1]將等於2和所有其它元素將等於0。

可以省略的大小數組。例如

int a[] = { 1, 2, 3, 4, 5 }; 

在這種情況下,因爲有在初始化列表中初始化編譯器將分配陣列的許多元件。

記錄(僅在C++中有效。在C它是不允許的)

int a[5] = {}; 

相當於

int a[5] = { 0 }; 

即陣列的所有元件將用0來初始化在最後一個記錄的第一個元素由零顯式初始化,所有其他元素也由零初始化,因爲它們在初始化程序列表中的初始值未指定。

你也可以初始化標對象相同的方式。例如

INT X = {10};

,對標對象,你只能指定一個初始化的唯一區別。你甚至可以在沒有賦值運算符

int x { 10 }; 

寫你也可以寫

int x {}; 

在這種情況下,x將由0

1

默認情況下,本地作用域的常規數組(例如,在函數中聲明的那些數組)未被初始化。這意味着它的所有元素都不會被設置爲任何特定的值;它們的內容在數組聲明的位置未定。

但是,通過將這些初始值包含在大括號{}中,可以在聲明時將數組中的元素顯式初始化爲特定值。

+0

謝謝你的出色答卷 – Skathix

2
int Array[26]= {0}; 

初始化數組中爲0

所有元素As BryanChen下面提及:

Note: int Array[26]= {1}; will initialize first element to 1 and others to 0. 
+1

注:'int數組[26] = {1};'第一個元素將初始化爲1,其他爲0。 –

+0

如何將一個初始化所有的值設置爲1? – Skathix

+0

是int數組[26] = {1,1,1,1,1 ...} 26個1S,或創建一個循環計數,你在需要的確切人數。 – GriffinG

0

注意

int array [constant] = {}; 

缺省初始化所有值。爲int的默認初始值是0。

int small[26]= {0}; 

集的第一數目爲0,默認初始化休息。

一般:

int array [constant] = {value initialize all indices listed here, 
         the rest are default initialized};