new和二级指针
2015-09-09 21:44
351 查看
⑴new动态分配存储空间如:int *p=new int;int *p=new int [10]; //动态数组的大小可以是变量或常量;而一般直接声明数组时,数组大小必须是常量又如:int *p1=new int(10); //动态分配用于存放整型数据的内存空间,将初值10写入该内存空间,并将首地址值返回指针p1;double *p2=new double [100]; //动态分配具有100个双精度实型数据元素的数组,同时将存储区的首地址返回给指针变量p2;对于生成二维及更高维的数组,应使用多级指针。为二维数组开辟空间:int **p=new int* [row];//row是二维数组的行,p是指向一个指针数组的指针for(int i=0; i<row; i++)p[i]=new int [col];//col是二维数组的列,p是指向一个int数组的指针删除这个二维数组:for(int i = 0; i < row;i++)delete []p[i]; //删除二维数组每行内的数据(每行内又是一个有col个元素的数组,p[i]指向该数组的首地址)delete []p;//最后再销毁指针数组⑵使用完动态无名变量后应该及时释放,要用到 delete 运算符delete p; //释放单个变量delete [ ] p;//释放数组变量(不论数组是几维)注意:c语言没有多维数组,只有一维数组,看到的2维数组只是一个一维数组,数组中的每个元素都是一个一维数组。
new不能开辟二维数组,只能开辟一段连续的空间。所以应该把p定义成指针数组,再为里面每个元素开辟空间。
int **p2=new int[3][3]和int *p2=new int[3][3]都是错误的
int [3][3]等价于数组指针int(*)[3]int**p等价于指针数组int*[3]
相关文章推荐
- [杂]EXTJS 浅谈及开发过程中的理解
- Windows-universal-samples-master示例 XamlCommanding
- roscore error
- COCI2014silueta
- My TaskList
- LinkedList的基本使用
- Windows-universal-samples-master示例 XamlCommanding
- 机器学习之凸优化基础二
- Android版本支付宝集成获取私钥与公钥
- UVA 11090 Going in Cycle!!
- populate next right pointer in each node
- 剑指Offer系列---(12)斐波那契数列
- poj 1676 What time is it?(经典模拟)
- 某二线城市软件行业批评
- 0909 操作系统概述
- 安卓的开端
- UVA 1629 二维裸区间DP dfs
- Android高效加载大图、多图解决方案,有效避免程序OOM
- notepad++的使用小技巧(多行标签)
- Spark1.2新特性概述