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

举报
C语言入门到精通 发表于 2021/02/10 00:25:33 2021/02/10
2.7k+ 0 0
【摘要】 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
请按任意键继续. . .
9.8 C++动态分配mp.weixin.qq.com图标

文章来源: zhuanlan.zhihu.com,作者:,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuanlan.zhihu.com/p/341849908

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。