【结构体】—定义、初始化、内存对齐

自定义类型一、结构体

1.存在的意义

  • 静态的结构体可以节省很多内存和运行时间
  • 增强程序的可读性和稳定性

2.结构体声明
例如描述一个学生结构体

struct Stu//结构体名
{
	char name[20];
	int age;
	char sex[5];
	char id[20];
};//变量列表

3.结构体的自引用(链表节点的定义)

struct Node
{
	int data;//数据节点
	struct Node* next;//指针节点
};

结构体A中定义了一个指针b,该指针指向一个结构体A类型。为什么可以这么做呢?因为编译器在编译时已经知道一个指针所占的空间长度可以为其分配空间。这样就可以实现结构体自己调用自己。

4.结构体变量的定义和初始化

  1. 在声明的同时定义变量
struct Point
{
	int x;
	int y;
}p1;//在声明的同时定义结构体变量p1
  1. 单独定义结构体变量p2
struct Point p2;
  1. 定义变量的同时赋值
struct Point p3 = {x,y};

5.结构体的内存对齐

  1. 为什么要内存对齐
    性能原因:处理器访问内存时是按照固定大小对数据进行取值,对齐内 存只需要访问一次,而未对其的内存则需要两次
  2. 内存如何对齐
    在这里插入图片描述
  3. 内存对齐练习
    对齐数得出时int类型的四个字节;所以最后是16
    对齐数得出是int类型的四个字节;所以最后是16

嵌套问题的对齐数

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值