1. 结构体:C语言中的自定义数据类型利器
在C语言的世界里,结构体(struct)就像是一个万能收纳盒,它能将不同类型的数据打包成一个整体。想象一下你要管理学生信息:姓名(字符串)、学号(整数)、成绩(浮点数)——这些不同类型的数据如果分散存放会很麻烦。结构体就是为解决这类问题而生的。
结构体本质上是一种用户自定义的复合数据类型,它允许你将多个不同类型的变量组合在一起,形成一个新的数据类型。这种特性在以下场景特别有用:
- 需要将逻辑上相关的数据组合管理时(如学生信息、商品属性)
- 函数需要返回多个不同类型的数据时
- 需要创建复杂的数据结构(如链表、树)时
提示:结构体是C语言实现面向对象编程思想的基础,虽然C不是面向对象语言,但通过结构体+函数指针的方式,可以模拟简单的类和对象。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 结构体的定义与声明
2.1 基本定义语法
定义一个结构体就像设计一个数据模板,语法格式如下:
c复制struct 结构体标签 {
数据类型 成员1;
数据类型 成员2;
// 更多成员...
};
例如,定义一个学生结构体:
c复制struct Student {
char name[50]; // 姓名
int id; // 学号
float score; // 成绩
char major[30]; // 专业
};
这里我们创建了一个名为Student的新类型,它包含四个不同类型的成员。注意这只是类型定义,还没有实际创建变量。
2.2 结构体变量的声明
定义了结构体类型后,可以像使用基本类型一样声明变量:
c复制// 方式1:先定义类型,再声明变量
struct Student stu1, stu2;
// 方式2:定义类型的同时声明变量
struct Employee {
char name[50];
int age;
} emp1, emp2;
// 方式3:使用typedef创建别名
typedef struct {
char title[100];
float price;
} Book;
Book book1; // 现在可以直接用Book而不用写struct
注意:在C语言中,使用结构体类型时必须带
struct关键字(除非用了typedef),这与C++不同。
3. 结构体成员的访问与初始化
3.1 成员访问操作符
结构体成员通过点操作符(.)访问:
c复制struct Student stu;
strcpy(stu.name, "张三");
stu.id = 2023001;
stu.score = 89.5;
printf("姓名:%s,学号:%d,成绩:%.1f\n", stu.name, stu.id, stu.score);
如果有一个指向结构体的指针,可以使用箭头操作符(->):
``
