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

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
请按任意键继续. . .

C++存放结构体变量
更多案例可以go公众号:C语言入门到精通

猜你喜欢

转载自blog.csdn.net/weixin_48669767/article/details/112203735
今日推荐