9.8 C++动态分配 | 存放结构体变量
【摘要】 C++动态分配C语言是利用库函数malloc和free来分配和撤销内存空间的;C++同样提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。在C++中,new和delete是运算符,不是函数,因此执行效率高,为了与C语言兼容,C++仍保留malloc和free函 数,但不建议读者使用malloc和free函数,而是使用new和delete运算符。...
C++动态分配
C语言是利用库函数malloc和free来分配和撤销内存空间的;C++同样提供了较简便而功能较强的运算符new和delete来取代malloc和free函数。
在C++中,new和delete是运算符,不是函数,因此执行效率高,为了与C语言兼容,C++仍保留malloc和free函 数,但不建议读者使用malloc和free函数,而是使用new和delete运算符。
new int; //开辟一个存放整数的存储空间,返回一个指向该存储空 间的地址
new int(100)//开辟一个存放整数的空间,并指定该整数的初值为100,返回一个指向该存储空间的地址
new char[10];//开辟一个存放字符数组的空间,返回首元素的地址
new int[3][4]; //开辟一个存放二维整型数组的空间,返回首元素的地址
float *point=new float(3.1415);//开辟一个存放单精度数的空间,并指定该实数的初值为3.1415,将返回的该空间的地址赋给指针变量point
new运算符使用的一般格式
new 类型 [初值]
在C++中,用new分配数组空间时不能指定初值,如果由于内存不足导致无法正常分配空间,则new会返回 一个空指针NULL,读者可以根据该指针的值判断分配空间是否成功。
C++在动态分配或撤销空间时,往往将new、delete两个运算符和结构体结合使用。
经典案例:C++实现开辟空间存放结构体变量。
#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;
}
编译运行结果:
10001
yan xiao lin
M
--------------------------------
Process exited after 2.318 seconds with return value 0
请按任意键继续. . .

文章来源: zhuanlan.zhihu.com,作者:,版权归原作者所有,如需转载,请联系作者。
原文链接:zhuanlan.zhihu.com/p/341849908
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)