初始化动态分配的数组问题
来源:互联网 发布:疯狂的程序员 编辑:程序博客网 时间:2024/04/28 18:47
动态分配数组时,如果数组元素具有类类型,将使用该类的默认构造函数实现初始化;如果数组元素是内置类型,则无初始化。
string *psa=new string [10];
int *pia=new int [10];
这两个new表达式都分配了10个对象的数组,第一个数组是string类型,分配了存储对象的空间后,会调用string类型的默认构造函数依次初始化数组中的每个元素。第二个数组为内置类型,分配了存储10个int对象的内从空间,并没 初始化。
可以跟在数组后面加一对空圆括号,对数组元素进行初始化。
int *pia2=new int [10]();
圆括号要求编译器对数组初始化,这里把数组元素都设置为0。//对于这里在VC 6.0下测试,输出为一个很大的负数,VS 2010中输出10个0,对此鸭梨很大。
PS:对于动态分配数组,其元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。
另外C++种允许动态分配空数组
char arr[0];//错
char *cp=new char [0];//正确,但是不能解引用,因为它没指向任何元素。
这里补充一点:
const char *str=st2.c_str();//st2 是string类型
c_str返回的数组并不保证一定是有效的,接下来对st2的操作有可能会改变st2的值,使刚才返回的数组失效,如果程序需要持续访问该数据,则应该复制c_str函数返回的数组。
- 初始化动态分配的数组问题
- 初始化动态分配的数组
- 初始化动态分配的数组
- 动态分配的数组的初始化,sizeof长度
- 二维数组的动态分配(new)、初始化(…
- 二维数组的动态分配(new)、初始化(…
- 数组的动态分配(new)、初始化(memset)和撤销(delete)
- C++数组的动态分配(new)、初始化(memset)和撤销(delete)
- 二维数组的动态分配(new)、初始化(memset)和撤销(delete)
- 动态分配内存 and malloc&new and 数组的动态分配、初始化(memset)和撤销(delete)
- 数组的初始化问题
- 数组的初始化问题
- c++数组的动态分配
- 多维数组的动态分配
- 二维数组的动态分配
- 二维数组的动态分配
- 二维数组的动态分配
- 多维数组的动态分配
- nboot通过DNW下载并运行eboot.nb0
- Delphi 组件渐进开发浅谈(一)——由简入繁
- symbian lbs google 地图编程汇总
- 给自己一点激励
- IIS无法启动
- 初始化动态分配的数组问题
- 如何预测基金净值未来的成长性?
- 大杂院-------STL中的泛型思想与迭代器家族
- Linux 查看软件位置的命令
- How to do the job effectively and excellently
- QQ2010的个人文件夹结构
- getElementById在IE和FireFox下兼容问题
- 刚刚报道,祝贺下
- 有关表分区的一些维护性操作: