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