是否有任何區別,例如array [n]和array []之間的區別?
int array[]={1, 2, 3, 4, 5};
和,
int array[5]={1, 2, 3, 4, 5};
編譯器需要由自對第一種情況下,計算元件的數量,並且,可以採取一個一定的時間(的{...}
1234332534元素),所以第二種情況比第一種情況更有效率?
是否有任何區別,例如array [n]和array []之間的區別?
int array[]={1, 2, 3, 4, 5};
和,
int array[5]={1, 2, 3, 4, 5};
編譯器需要由自對第一種情況下,計算元件的數量,並且,可以採取一個一定的時間(的{...}
1234332534元素),所以第二種情況比第一種情況更有效率?
此數組的聲明:
int array[] = {1, 2, 3, 4, 5};
是完全相同爲:
int array[5] = {1, 2, 3, 4, 5};
元件的數量是在編譯時計算出,所以有與該相關聯的沒有運行時成本。
第一聲明的優點是,它不需要程序員手動計數元件的數量,所以它的在這個意義上更有效的數組聲明。
沒有區別,除了你,程序員,沒有以確定有多少元素在數組中。編譯器仍然會計算元素以分配適當的數量,所以兩者都需要編譯器有相同的時間來編譯。
†。另一方面,全球大陣列是如何將二進制資源包含在固件中以便閃存到嵌入式設備上的。但我不認爲任何人都會考慮這種蠻力方法來處理大於幾MB的任何事情。
+1。 :)(15個字符) –
在第二種情況下,如果初始化內存的值數量錯誤,預編譯器將捕獲錯誤。這是非常多的。
不正確。 '[]'中的數字可能大於初始化列表的大小;在這種情況下,假定剩餘區域被初始化爲零。 –
允許提供比數組大小更少的元素,其他元素都是零初始化的。而預編譯器不涉及這裏,檢查是由實際的編譯器完成的。 –
「1234332534元素數組」 - 在堆棧上分配大約4GB(12億整數)可能會很麻煩。通常的堆棧大小隻有幾兆字節。除此之外,沒有理由使用另一種方法,因爲如果有任何開銷,它只會在編譯時發生。 – Damon
「計數」元素所花費的時間與編譯的其他部分相比並不明顯 - 事實上,即使在第二種形式中,我也認爲(要報告錯誤),並且在任何情況下它會處理相同數量的元素。 'int arr [2] = {1,2,3};' - errm? – 2011-08-31 23:03:04