江哥带你玩转C语言 | 14 - 结构体-枚举-共用体

本文详细介绍了C语言中的结构体、枚举和共用体,包括它们的定义、成员访问、初始化、内存分析及应用。通过实例展示了如何定义结构体类型、结构体变量,以及结构体在数组、指针和函数中的使用。同时,枚举类型的定义和枚举变量的赋值与使用也进行了讲解,最后探讨了共用体节省内存的特性及其应用场景。
摘要由CSDN通过智能技术生成

什么是结构体

  • 结构体和数组一样属于构造类型
  • 数组是用于保存一组相同类型数据的, 而结构体是用于保存一组不同类型数组的
    • 例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。
    • 显然这组数据不能用数组来存放, 为了解决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。

定义结构体类型

  • 在使用结构体之前必须先定义结构体类型, 因为C语言不知道你的结构体中需要存储哪些类型数据, 我们必须通过定义结构体类型来告诉C语言, 我们的结构体中需要存储哪些类型的数据
  • 格式:
struct 结构体名{
     类型名1 成员名1;
     类型名2 成员名2;
     ……
     类型名n 成员名n;
 };
  • 示例:
struct Student {
    char *name; // 姓名
    int age; // 年龄
    float height; // 身高
};

定义结构体变量

  • 定好好结构体类型之后, 我们就可以利用我们定义的结构体类型来定义结构体变量

  • 格式: struct 结构体名 结构体变量名;

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

struct Student {
     char *name;
     int age;
 };

 struct Student stu;
  • 定义结构体类型的同时定义变量
struct Student {
    char *name;
    int age;
} stu;
  • 匿名结构体定义结构体变量
struct {
    char *name;
    int age;
} stu;
  • 第三种方法与第二种方法的区别在于,第三种方法中省去了结构体类型名称,而直接给出结构变量,这种结构体最大的问题是结构体类型不能复用

结构体成员访问

  • 一般对结构体变量的操作是以成员为单位进行的,引用的一般形式为:结构体变量名.成员名
struct Student {
     char *name;
     int age;
 };
 struct Student stu;
 // 访问stu的age成员
 stu.age = 27;
 printf("age = %d", stu.age);

结构体变量的初始化

  • 定义的同时按顺序初始化
struct Student {
     char *name;
     int age;
 };
struct Student stu = {“lnj", 27};
  • 定义的同时不按顺序初始化
struct Student {
     char *name;
     int age;
 };
struct Student stu = {.age = 35, .name = “lnj"};
  • 先定义后逐个初始化
struct Student {
     char *name;
     int age;
 };
 struct Student stu;
stu.name = "lnj";
stu.age = 35;
  • 先定义后一次性初始化
struct Student {
     char *name;
     int age;
 };
str
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值