[C++学习] C++ Primer 第4版 习题4.28 C++动态数组
2012-04-02 21:38
288 查看
这个习题需要注意以下知识点:
1. C++ 支持动态数组,
可以用 int * p = new int [XXX];这样来定义.
这样定义的动态数组,
如果是 语言内置类型的(比如 int 之类),是没有进行过初始化的;
如果是 类类型的 ,会调用 默认的构造函数.
如果希望 内置类型也进行初始化,则需要加个空括号
int *p = new int[XXXX]();
这样就会初始化一个值了.
2.
动态数组占用 堆内存(Heap),需要以
delete [] p;
这样的语句来回收内存.
不能落下那个 [],否则会 出现 memory leak.
1. C++ 支持动态数组,
可以用 int * p = new int [XXX];这样来定义.
这样定义的动态数组,
如果是 语言内置类型的(比如 int 之类),是没有进行过初始化的;
如果是 类类型的 ,会调用 默认的构造函数.
如果希望 内置类型也进行初始化,则需要加个空括号
int *p = new int[XXXX]();
这样就会初始化一个值了.
2.
动态数组占用 堆内存(Heap),需要以
delete [] p;
这样的语句来回收内存.
不能落下那个 [],否则会 出现 memory leak.
#include<iostream> #include<string> #include<vector> using std::cin; using std::cout; using std::endl; using std::vector; using std::string; int main() { vector<int> vecInput; int iTemp = 0; while(cin>>iTemp) { if(iTemp==0) { break; } vecInput.push_back(iTemp); } int *arrConvert = new int[vecInput.size()](); for(int i=0;i<vecInput.size();i++) { arrConvert[i] = vecInput[i]; } delete [] arrConvert; return 0; }
相关文章推荐
- [C++ 学习] C++ Primer 第4版 习题 4.32
- [C++学习] c++ primer 第4版 习题3.14
- [C++ 学习] C++ Primer 习题 4.36 指针数组 & 数组指针
- [C++ 学习] C++ Primer 第4版 习题 4.30 字符串操作 & 我对堆内存 和 常量区内存的一些理解
- [C++学习] C++ Primer 第4版 习题4.18
- [c++学习] C++ primer 第4版 习题4.20 4.21 常量指针 和 指针常量
- [C++ 学习] C++ primer 第4版 习题4.19
- [C++ 学习] C++ Primer 第4版 习题 4.31
- C++ Primer学习笔记2--c++中的数组和指针
- C++ Primer 学习笔记:动态数组
- c++ primer plus 习题5.7(使用new为结构创建动态数组)
- [C++ 学习] C++ Primer 习题 5.30 new & delete 操作符
- C++ Primer 学习笔记与思考_6 数组和动态数组易错点解读
- 【C++学习】通过输入数来确定一个数组的动态大小
- c++ primer(第五版)学习笔记及习题答案代码版(第三章)字符串、向量和数组
- C++ Primer 中文版 第4版 习题4.28
- c++ primer(第五版)学习笔记及习题答案代码版(第十二章)动态内存与智能指针
- [C++ 学习] C++ Primer 习题 4.34 4.35
- C++学习笔记——C++动态数组的创建与删除
- [C++学习] c++ primer 习题3.18