【C语言】结构体

在这里插入图片描述
在这里插入图片描述

上期回顾: 【C语言】数据在内存中的存储
个人主页:C_GUIQU
归属专栏:C语言

在这里插入图片描述

前言

各位小伙伴大家好!上期小编给大家讲解了C语言中数据在内存中的存储,接下来我们讲解一下结构体!

1. 结构体类型的声明

在C语言中,结构体(struct)是一种用户自定义的数据类型,允许将不同类型的数据项组合成一个单一的复合类型。
结构体类型的声明通常使用 struct 关键字,并定义一个结构体标签,然后是一对大括号,括号内包含一个或多个成员变量。

下面是一个结构体声明的例子:

struct Student {
   
   
    char name[50];
    int age;
    float score;
};

在这个例子中,struct Student 是一个包含三个成员的结构体:一个字符数组 name 用于存储学生的名字,一个整数 age 用于存储学生的年龄,以及一个浮点数 score 用于存储学生的分数。

一旦声明了结构体类型,就可以使用 struct 关键字来声明该类型的变量:

struct Student student1;

此外,C语言允许在声明结构体类型的同时声明变量:

struct {
   
   
    char name[50];
    int age;
    float score;
} student2;

在这种情况下,我们没有为结构体类型提供标签,这样的结构体称为匿名结构体,student2 变量就是这种匿名结构体类型的一个实例。由于没有标签,这种形式的结构体声明通常只能使用一次,即在声明的同时创建变量。

结构体成员的访问是通过点操作符(.)来完成的,例如:

strcpy(student1.name, "张三");
student1.age = 20;
student1.score = 92.5;

这些语句分别设置 student1 结构体的 nameagescore 成员。

结构体类型声明:

  1. 结构体标签:在声明结构体时,可以为其指定一个标签,例如 struct Student。这个标签在后续声明结构体变量时使用。
  2. 成员变量:结构体内部可以包含一个或多个成员变量,这些成员可以是基本数据类型(如 int、float、char 等),也可以是其他复合数据类型(如数组、指针、其他结构体等)。
  3. 匿名结构体:如果省略结构体标签,则称为匿名结构体。这种结构体只能在声明时直接创建变量,不能在其他地方使用。
  4. 结构体变量的声明:使用 struct 关键字和结构体标签来声明结构体变量。例如,struct Student student1; 声明了一个名为 student1struct Student 类型的变量。
  5. 结构体成员的访问:使用点操作符(.)来访问结构体成员。例如,student1.age = 20;student1 结构体的 age 成员设置为 20。
  6. 结构体数组:可以声明结构体数组来存储多个结构体变量。例如,struct Student students[100]; 声明了一个包含 100 个 struct Student 类型元素的数组。
  7. 结构体指针:可以使用指针来存储结构体变量的地址。例如,struct Student *ptr = &student1; 声明了一个指向 student1 结构体变量的指针。结构体成员的访问可以使用箭头操作符(->):ptr->age = 20;
  8. 结构体初始化:可以在声明结构体变量时进行初始化。例如:
struct Student student1 = {
   
   "张三", 20, 92.5};

或者使用 C99 标准的指定初始化器:

struct Student student1 = {
   
   .name = "张三", .age = 20, .score = 92.5};

2. 结构体变量的创建和初始化

在C语言中,结构体变量可以通过多种方式进行创建和初始化。

创建结构体变量

  1. 声明结构体类型后创建变量
    首先,你需要声明一个结构体类型,然后使用该类型来创建变量。
    struct Student {
         
         
        char name[50];
        int age;
        float score;
    };
    struct Student student1;
    
  2. 在声明结构体类型的同时创建变量
    你可以在声明结构体类型的同时直接创建变量,无需指定结构体标签。
    struct {
         
         
        char name[50];
        int age;
        float score;
    } student2;
    
    这种方式创建的变量 student2 是一个匿名结构体变量,你不能在其他地方使用结构体类型来创建更多变量。
  3. 使用指针创建结构体变量
    你可以使用 malloc 或其他内存分配函数来动态分配结构体变量的内存。
    struct Student *student3 = malloc(sizeof(struct Student));
    
    注意,使用动态分配的内存后,需要手动释放内存以避免内存泄漏。

初始化结构体变量

  1. 在创建时初始化
    你可以在创建结构体变量时直接初始化其成员。
    struct Student student1 = {
         
         </
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guiat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值