我正在學習編程類中的2D數組。我的老師在不解釋的情況下使用了一些東西,我很好奇爲什麼我們使用它。由於它與一個符號有關,我不知道如何谷歌或搜索它,因爲這些符號用於搜索本身。不管怎麼說代碼是這樣的:使用圍繞變量C++的花括號(大括號)
int small[26]= {0}, large[26]={0}, i;
爲什麼在大括號需要圍繞0的?
該程序代碼是檢查文件的一部分,查找字母表中的每個字母並單獨計數。
我正在學習編程類中的2D數組。我的老師在不解釋的情況下使用了一些東西,我很好奇爲什麼我們使用它。由於它與一個符號有關,我不知道如何谷歌或搜索它,因爲這些符號用於搜索本身。不管怎麼說代碼是這樣的:使用圍繞變量C++的花括號(大括號)
int small[26]= {0}, large[26]={0}, i;
爲什麼在大括號需要圍繞0的?
該程序代碼是檢查文件的一部分,查找字母表中的每個字母並單獨計數。
它可以寫成更簡單
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
默認情況下,本地作用域的常規數組(例如,在函數中聲明的那些數組)未被初始化。這意味着它的所有元素都不會被設置爲任何特定的值;它們的內容在數組聲明的位置未定。
但是,通過將這些初始值包含在大括號{}中,可以在聲明時將數組中的元素顯式初始化爲特定值。
謝謝你的出色答卷 – Skathix
注意
int array [constant] = {};
缺省初始化所有值。爲int
的默認初始值是0。
int small[26]= {0};
集的第一數目爲0,默認初始化休息。
一般:
int array [constant] = {value initialize all indices listed here,
the rest are default initialized};
不要問爲什麼需要大括號的初始化,您應該問爲什麼需要'0'。事實並非如此。這裏有一個初始化器,它使用指定的值(如果有的話)初始化數組的相應項,並將數組的其餘部分初始化爲零(或該類型的默認值)。 –
好的,仍然,他們的目的是什麼? – Skathix
這些不是二維數組,只是簡單的C風格數組。 – blackbird