C++數組初始化
回答
沒有所有人都有與第一個相同的價值嗎?
沒有!當數組部分初始化時,未初始化的數組元素將被初始化(零初始化,在這種情況下爲)。
C++ 03第8.5.1節/ 7
如果在列表中更少的初始化值多於部件在總體上,則每個部件不明確初始化應值初始化 (8.5)。
[實施例:struct S { int a; char* b; int c; }; S ss = { 1, "asdf" };
初始化
ss.a
1,ss.b
用 「ASDF」,和ss.c
與表單 INT(的表達式的值),即,0]
但是,這不是如果我這樣做: float miniTime [7] = {FLT_MAX,FLT_MAX}和其餘5將是0?如果我只設置其中一個元素,應該是相同的,或者不是? – doubter 2011-03-13 17:21:44
從技術上講,其餘的元素都是初始化值,而不是零初始化的。不是說漂浮物有任何區別:) – 2011-03-13 17:24:12
@阿門:是的!添加了標準中的相關文本。 – 2011-03-13 17:26:22
不,只有第一個值用提供的值初始化,其他值則按照標準初始化。
按照標準,它們是值初始化的,不是默認初始化的。不是說POD類型有什麼區別,包括非常多的漂浮物 – 2011-03-13 17:35:05
您的鏈接頁面顯示「...未指定的元素設置爲零」。
這是正確的;因此,只有陣列中的第一個元素被指定爲FLT_MAX
,其餘元素被初始化爲零。如果你想將它們全部設置爲相同的值,你可以使用一個for循環,或更簡潔:
std::fill_n(minTime, 7, FLT_MAX);
以示警告,C++是一個很難的語言。這意味着很多人有很多錯誤信息,這在互聯網上很容易找到。你最好從book on our list學習。 (是的,那些我們的名單上沒有是如此,因爲它們也含有誤傳!)
- 1. C#初始化數組
- 2. C數組初始化
- 3. C++數組初始化
- 4. C++數組初始化
- 5. 數組c初始化
- 6. 初始化數組C++
- 7. C++數組初始化
- 8. 初始化數組時初始化System.AccessViolationException
- 9. C/C++私有數組初始化
- 10. C/C++中的數組初始化
- 11. 初始化字符數組 - C和C++
- 12. C結構自動初始化值,數組初始化
- 13. 用數組或初始化初始化一個NSMutableArray初始化
- 14. 數組初始化
- 15. 數組初始化
- 16. 初始化數組
- 17. 數組初始化
- 18. 如何初始化整數數組C#
- 19. C - 如何初始化一個預初始化的二維數組數組?
- 20. c + +多維數組不會初始化
- 21. C動態數組初始化問題
- 22. 初始化靜態指針數組C++
- 23. C結構數組初始化鑄造
- 24. 從C數組初始化ublas向量
- 25. C++中的boost數組初始化
- 26. C數組初始化範圍
- 27. C++類的數組初始化
- 28. C++二維數組初始化
- 29. C多維字符數組初始化
- 30. C++數組初始化與賦值
從你的鏈接:缺少初始值使用零 如果指定了明確的數組的大小,而是指定了一個短initiliazation名單,未指定的元素被設置爲零。 – Erik 2011-03-13 17:21:09