new的用法

一、new创建

new运算符使用的一般格式为:

new 类型 (初值) /new 类型 [大小]

new动态创建二维数组的格式一般是这样:

T (*p)[N] = new T [][N]

其中,T是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数无需指定。在这里,p的类型是TYPE*[N],即是指向一个有N列元素数组的指针。

注意:

new创建对象需要指针接收,一处初始化,多处使用

new创建对象使用完需delete销毁

new创建对象直接使用堆空间,而局部不用new定义对象则使用栈空间

new对象指针用途广泛,比如作为函数返回值、函数参数等

频繁调用场合并不适合new,就像new申请和释放内存一样。

用new分配数组空间时不能指定初值。

如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。

详细解说:

  1. new( ) 分配这种类型的一个大小的内存空间,并以括号中的值来初始化这个变量;

    2. new[ ] 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量;
new int;//开辟一个存放整数的存储空间,返回一个指向该存储空间的地址(即指针)   
new int(100);//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
new char[10];//开辟一个存放字符数组(包括10个元素)的空间,返回首元素的地址   
new int[5][4];//开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址   
float *p=new float (3.14159);//开辟一个存放单精度数的空间,并指定该实数的初值为//3.14159,将返回的该空间的地址赋给指针变量p
  1. 当使用new运算符定义一个多维数组变量或数组对象时,它产生一个指向数组第一个元素的指针,返回的类型保持了除最左边维数外的所有维数。

例如:

int *p1 = new int[10];//返回的是一个指向int的指针int*
int (*p2)[10] = new int[2][10];//new了一个二维数组, 去掉最左边那一维[2], 剩下int[10], 所以返回的是一个指向int[10]这种一维数组的指针int (*)[10].
int (*p3)[2][10] = new int[5][2][10]; //new了一个三维数组, 去掉最左边那一维[5], 还有int[2][10], 所以返回的是一个指向二维数组int[2][10]这种类型的指针int (*)[2][10].

二、空间释放

delete运算符使用的一般格式为:

delete [ ] 指针变量 /delete 指针变量

其中在指针变量前面加一对方括号,表示是对数组空间的操作

例如

deletep;//要撤销类似float *p=new float (3.14159)开辟的空间

delete[] pt;//在指针变量前面加一对方括号,表示是对数组空间的操作

三、例 开辟空间以存放一个结构体变量。

#include <iostream>   
#include <string>   
using namespace std;
struct Student //声明结构体类型Student
  {
string name;   
int num;   
char sex;
  };
int main( )   
{
Student *p; //定义指向结构体类型Student的数据的指针变量
  p=new Student; //用new运算符开辟一个存放Student型数据的空间
  p->name=″Wang Fun″; //向结构体变量的成员赋值
  p->num=10123;
  p->sex='m';
cout<<p->name<<endl<<p->num<<endl<<p->sex<<endl;//输出各成员的值
  delete p;//撤销该空间
  return 0;   
}   
运行结果为   Wang Fun 10123 m

原文链接:

c++中,new的用法很灵活,这里进行了简单的总结:_进击的火山博客-CSDN博客

c++中 new的使用方法_计量小菜鸡的博客-CSDN博客_c++new的用法
原文链接: https://www.cnblogs.com/luyufan/p/15835013.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/187400

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 上午11:17
下一篇 2023年2月12日 上午11:17

相关推荐