第十章_结构体

本文详细讲解了C++中的结构体,包括结构体的定义与初始化、结构体变量间的赋值方法、结构体嵌套、结构体数组、结构体指针、结构体拷贝(浅拷贝与深拷贝)、结构体对齐规则以及结构体的位域。通过实例展示了如何处理结构体中的指针成员,以及如何避免堆区空间的重复释放问题。
摘要由CSDN通过智能技术生成

目录

一、结构体类型的定义及初始化

二、相同类型的结构体变量之间的赋值方法

 三、结构体嵌套结构体 

四、结构体数组

五、结构体指针变量

六、结构体数组元素的指针变量

七、结构体指针成员

1.结构体变量在堆区,结构体指针成员指向文字常量区 

2.结构体变量在堆区,结构体的指针成员也指向堆区

八、结构体拷贝  

1、结构体浅拷贝

2、结构体深拷贝 

九、结构体对其规则  

十、结构体的位域


一、结构体类型的定义及初始化

将不同类型变量封装在一起。(本质是一种数据类型)

方法一:

先定义结构体类型,再定义结构体变量

struct Student(结构体类型名)  //定义结构体类型

{

int num;

char name[20];

//成员列表

}

Student lucy={20,"lucy"};  //定义结构体类型的变量  +初始化

lucy.name="bob";//错误,name是字符数组变量名,不带这样赋值的

改为:strcpy(lucy.name,"bob");

方法二:

定义类型的同时定义结构体变量

#include<string.h>              //memset的头文件

struct Student(结构体类型名)

{

int num;

char name[20];

//成员列表

}lucy

Student bob;

memset(&bob,0,sizeof(bob));  //初始化为零,清空结构体 

补充:void *memset(void *dst,void *val,void *size) :

将地址从dst开始,长度为size的所有字节赋值为 val

方法三:

定义一次性结构体类型

struct              //无结构体类型名,无法在外定义结构体类型变量

{

int num;

char name[20];

//成员列表

}lucy

*注意:

  • 定义结构体类型时,系统不会为结构体类型开辟空间,当定义结构体类型的变量时才开辟空间。结构体中的成员具有独立的空间
  • 不要给成员初始化值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值