关于动态分配数组的初始化问题

zentropy 2008-02-16 09:29:46
《C++ Primer》(第四版)P117里面有一段话:

也可使用跟在数组长度后面的一对空圆括号,对数组元素做值初始化
int *pia2 = new int[10](); //array of 10 uninitialized ints
圆括号要求编译器对数组做值初始化,在本例中即把数组元素都设置为0。

疑问
(1)语句后面的array of 10 uninitialized ints不是说未初始化么?怎么又说初始化
(2)在VC++ 6.0环境下,下面代码表明并未初始化。如果没有初始化,那么跟一个空圆括号又有什么用途?

#include <iostream>

using namespace std;

int main()
{
int *pia = new int[10]();
cout << pia[0] << endl;
delete[] pia;
return 0;
}
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
YogiLai 2009-04-20
  • 打赏
  • 举报
回复
我用的是dev c++还是一样没初始化为零,怎么回事啊,dev c++不集成g++吗不是很好支持c++标准吗,怎么还是不行啊,
visame 2008-02-16
  • 打赏
  • 举报
回复
(1)语句后面的array of 10 uninitialized ints不是说未初始化么?怎么又说初始化
这是一处笔误。下一版肯定会更正的。
(2)在VC++ 6.0环境下,下面代码表明并未初始化。如果没有初始化,那么跟一个空圆括号又有什么用途?
别用VC6(与标准相差太远),用VC2005/VC2008/G++试试。最新版的G++下肯定行,我验证过。
  • 打赏
  • 举报
回复
说的一回事,实现又是另一回事了.
所以遇见问题请以编译器实现为准.

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧