Jupyter AI

29 结构体与共用体之结构体的定义与使用

📅 发表日期: 2024年8月10日

分类: 💻C++ 入门

👁️阅读: --

在前一篇文章中,我们探讨了指针之指针及其在函数中的使用,接下来我们将深入了解 结构体 的定义与使用。结构体 是 C 语言中一种用户定义的数据类型,它允许将不同类型的数据组合在一起。结构体在开发中非常有用,尤其是在需要将相关数据组织在一起时。

1. 结构体的定义

结构体的定义使用 struct 关键字,基本语法如下:

struct 结构体名称 {
    数据类型 成员名1;
    数据类型 成员名2;
    // 可添加更多成员
};

1.1 示例:定义一个学生结构体

我们来定义一个简单的学生结构体,包含学生的姓名、年龄和成绩:

struct Student {
    char name[50];  // 学生姓名
    int age;       // 学生年龄
    float score;   // 学生成绩
};

在这个定义中:

  • struct Student 是结构体的名称。
  • char name[50] 表示姓名是一个字符数组,最多可以存储 49 个字符(加上结束符)。
  • int age 用于存储学生的年龄。
  • float score 用于存储学生的成绩。

2. 结构体的变量声明

在定义了结构体后,我们可以声明结构体类型的变量。可以使用两种方式来声明变量:

2.1 单个变量声明

struct Student s1;  // 声明一个 Student 结构体变量 s1

2.2 多个变量声明

struct Student s1, s2;  // 同时声明多个 Student 结构体变量

3. 结构体成员的访问

访问结构体的成员使用 . 运算符。例如,可以通过以下方式访问 s1 结构体变量的成员:

strcpy(s1.name, "Alice"); // 赋值姓名
s1.age = 20;              // 赋值年龄
s1.score = 85.5;          // 赋值成绩

strcpy 函数用于字符串拷贝,需要包含 string.h 头文件。

示例:打印学生信息

下面是一个简单的函数,用于打印学生的信息:

#include <stdio.h>
#include <string.h>

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

void printStudent(struct Student s) {
    printf("Name: %s\n", s.name);
    printf("Age: %d\n", s.age);
    printf("Score: %.2f\n", s.score);
}

int main() {
    struct Student s1;
    strcpy(s1.name, "Alice");
    s1.age = 20;
    s1.score = 85.5;

    printStudent(s1);
    return 0;
}

在这个例子中,我们定义了一个 printStudent 函数来打印学生的详细信息。程序输出如下:

Name: Alice
Age: 20
Score: 85.50

4. 结构体数组

结构体 也可以用于创建一个结构体数组,这在需要处理多个相似对象时特别有用。

示例:定义学生数组

struct Student students[3];  // 定义一个包含 3 个学生信息的数组

// 初始化数组
strcpy(students[0].name, "Alice");
students[0].age = 20;
students[0].score = 85.5;

strcpy(students[1].name, "Bob");
students[1].age = 22;
students[1].score = 90.0;

strcpy(students[2].name, "Charlie");
students[2].age = 21;
students[2].score = 88.5;

// 打印所有学生信息
for(int i = 0; i < 3; i++) {
    printStudent(students[i]);
}

5. 嵌套结构体

一个结构体的成员可以是另一个结构体,这被称为嵌套结构体。

示例:定义课程结构体

struct Course {
    char title[50];       // 课程标题
    int creditHours;      // 学分
};

struct Student {
    char name[50];
    int age;
    float score;
    struct Course course;  // 嵌套的结构体
};

总结

在本节中,我们学习了 结构体 的定义与使用,包括如何声明结构体、访问结构体的成员、使用结构体数组以及嵌套结构体的基本概念。这些知识对后续内容,特别是结构体的 共用体 使用将为我们打下良好的基础。

接下来,我们将探索 共用体 的定义与使用,了解如何使用这个特殊的数据结构来节省内存。

💻C++ 入门 (滚动鼠标查看)