关于C++中用new申请动态数组的初始化的两种方式

在C++11中引进了这一新功能,即用new申请动态数组时可以直接初始化,形式如下:

int* p = new int[cnt]();  //其中cnt长度和int类型都可以自己定义。

我发现的问题是:

//在VC编译器中使用这两种方式都可以
int* p = new int[cnt]();
int* p = new int[cnt]{};

//而且可以用这个方式给每个成员赋值。
int* a = new int[10] { 1,2,3,4,5,6,7,8,9,10 }; 

而用mingw,也就是g++编译器时,不支持

int* p = new int[cnt]{}; //提示的错误是“extended initializer lists only available with -std=c++0x or -std=gnu++0x”。

总结

也就是说{}是()的一种扩展方式,最好统一用(),避免掉坑。

同时这种初始化方式是C11的新特性,需要确认你的GCC编译器支持C11特性。
 

 

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值