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

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

1. 结构体的定义

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

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

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

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

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

在这个定义中:

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

2. 结构体的变量声明

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

2.1 单个变量声明

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

2.2 多个变量声明

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

3. 结构体成员的访问

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

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

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

示例:打印学生信息

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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 函数来打印学生的详细信息。程序输出如下:

1
2
3
Name: Alice
Age: 20
Score: 85.50

4. 结构体数组

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

示例:定义学生数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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. 嵌套结构体

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

示例:定义课程结构体

1
2
3
4
5
6
7
8
9
10
11
struct Course {
char title[50]; // 课程标题
int creditHours; // 学分
};

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

总结

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

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

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

https://zglg.work/cplusplus-zero/29/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论