前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >9.8 C++动态分配 | 存放结构体变量

9.8 C++动态分配 | 存放结构体变量

原创
作者头像
小林C语言
修改2021-01-05 10:19:59
1.2K0
修改2021-01-05 10:19:59
举报

C++动态分配

C语言是利用库函数malloc和free来分配和撤销内存空间的;C++同样提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。

在C++中,new和delete是运算符,不是函数,因此执行效率高,为了与C语言兼容,C++仍保留malloc和free函 数,但不建议读者使用malloc和free函数,而是使用new和delete运算符。

代码语言:javascript
复制
new?int;?//开辟一个存放整数的存储空间,返回一个指向该存储空 间的地址
new?int(100)//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址?
new?char[10];//开辟一个存放字符数组的空间,返回首元素的地址?
new?int[3][4];?//开辟一个存放二维整型数组的空间,返回首元素的地址?
float?*point=new?float(3.1415);//开辟一个存放单精度数的空间,并指定该实数的初值为3.1415,将返回的该空间的地址赋给指针变量point

new运算符使用的一般格式?

代码语言:javascript
复制
new 类型?[初值]

在C++中,用new分配数组空间时不能指定初值,如果由于内存不足导致无法正常分配空间,则new会返回 一个空指针NULL,读者可以根据该指针的值判断分配空间是否成功。

C++在动态分配或撤销空间时,往往将new、delete两个运算符和结构体结合使用。?

经典案例:C++实现开辟空间存放结构体变量。

代码语言:javascript
复制
#include<iostream>//预处理
#include<string>?
using?namespace?std;//命名空间?
struct?Student
{
??int?num;//学号?
??string?name;//姓名?
??char?sex;//性别?
};
int?main()//主函数?
{
??Student * point;//定义结构体指针变量?
??point=new?Student;//用new运算符开辟一个存放Student型数据的空间?
??point->num=10001;//赋值?
??point->name="yan xiao lin";?//赋值?
??point->sex='M';//赋值?
??cout<<point->num<<endl;//输出学号?
??cout<<point->name<<endl;//输出姓名?
??cout<<point->sex<<endl;//输出性别?
??delete?point;//撤销空间?
??return?0;?//函数返回值为0;
}

编译运行结果:

代码语言:javascript
复制
10001
yan xiao lin
M

--------------------------------
Process exited after?2.318?seconds?with?return?value?0
请按任意键继续. . .

9.8 C++动态分配 | 存放结构体变量

更多案例可以go公众号:C语言入门到精通

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com