栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】new和typedef用法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】new和typedef用法

  • 在C中:用malloc函数分配空间,free函数释放空间
  • 在C++中:用new函数分配空间,delete函数释放空间
C语言

在C语言中我们这样子使用

int *data;	
data = (int*)malloc(sizeof(int)*3);// 分配三个int大小空间
free data;
C++

而在C++里增加了new关键字,让我们更加方便
new的函数原型为void* operator new (std::size_t size)

使用例子如下:

int *m = new int;//分配一个int大小空间
delete m;
int *n = new int(3);//分配一个int大小空间并且初始化
delete n;
int *o = new int[3];//分配三个int大小空间
delete[] o;//这里要用delete[]释放空间否则会内存泄漏
数据结构里的例子

那么在数据结构中我们就能常见到new的用法:

typedef struct {
    ElemType *data;
    int MaxSize, length;
} SqList;
// C
L.data = (ElemType*)malloc(sizeof(ElemType)*InitSize);
// 等价的C++
L.data = new ElemType[InitSize];
typedef用法
typedef struct LNode {
    ElemType data;
    struct LNode *next;
} LNode, *LinkList;

// 等价于
struct LNode{
	ElemType data;
    struct LNode *next;
}
typedef struct LNode LNode;	
typedef struct LNode *LinkList;	


// 用法,以下两种写法等价,只是为了可读性更强
// 声明一个指向单链表的第一个结点的指针
LNode *L;
LinkList L;

再来看一个例子:

struct student{
    int num;
    char name[20];
    char sex;
};
struct student s1 = {1001,"myname",'M'};
struct student stArr[3] = {1001,"myname",'M',1002,"myname",'F',1007,"myname",'M'};
struct student *p;// 定义结构体指针

上述语句中我们定义了一个结构体,其类型为“struct student”,注意不能省去struct,它们是一体的。但每次使用这个结构体都要写 struct student 很麻烦。

因此我们可以利用typedef来简化一下:

typedef struct student{
    ...
}stu,*pstu,StuList[Snum];


// 等价于
struct student{
    ...
}
typedef struct student stu;
typedef struct student *pstu;			// 定义结构体指针类型
typedef struct student StuList[5];	 	// 定义学生数组
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026683.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号