new和二级指针详解

⑴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;//释放数组变量(不论数组是几维)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值