C语言 自定义类型:结构体,联合体,枚举

目录

一、结构体

1.1 结构体类型的声明

1.1.1 结构的声明

1.1.2 结构体变量的创建与初始化

1.1.3 结构的特殊声明

1.2 结构体的内存对齐

1.2.1 对齐规则

1.2.2 存在内存对齐的原因

二、联合体

2.1 联合体类型的声明

2.2 联合体的特点

 2.3 相同成员的结构体和联合体对比

三、枚举

3.1 枚举类型的声明

3.2 枚举类型的优点


一、结构体

1.1 结构体类型的声明

1.1.1 结构的声明

    例如描述一个学生

struct Stu
{
 char name[20];//名字 
 int age;//年龄 
 char sex[5];//性别
char id[20];//学号 
}; //分号不能丢 

1.1.2 结构体变量的创建与初始化

#include <stdio.h>
struct Stu
{
 char name[20];//名字 
 int age;//年龄 
 char sex[5];//性别 
 char id[20];//学号 
};
int main()
{
 //按照结构体成员的顺序初始化 
 struct Stu s = { "张三", 20, "男", "20230818001" };
 printf("name: %s\n", s.name);
 printf("age : %d\n", s.age);
 printf("sex : %s\n", s.sex);
 printf("id : %s\n", s.id);
 
 //按照指定的顺序初始化 
 struct Stu s2 = { .age = 18, .name = "lisi", .id = "20230818002", .sex = "⼥
 printf("name: %s\n", s2.name);
 printf("age : %d\n", s2.age);
 printf("sex : %s\n", s2.sex);
 printf("id : %s\n", s2.id);
 return 0;
}

1.1.3 结构的特殊声明

    在声明结构时,可以不完全声明 

//匿名结构体类型 
struct
{
 int a;
 char b;
 float c;
}x;
struct
{
 int a;
 char b;
 float c;
}a[20], *p;

1.2 结构体的内存对齐

1.2.1 对齐规则

首先得掌握结构体的对齐规则:

1.结构体的第⼀个成员对齐到和结构体变量起始位置偏移量为0的地址处。

2.其他成员变量要对齐到某个数字(对齐数&#

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值