struct 是什么
struct
就是一种“自定义数据类型”,可以把多个不同类型的变量打包在一起,组成一个整体。
举个通俗例子
-
假设保存一个“学生”的信息,有三个内容:
- 姓名(字符串)
- 年龄(整数)
- 成绩(浮点数)
-
如果不用
struct
,你得写三个独立变量:char name[20]; int age; float score;
-
如果有 100 个学生就要 300 个变量,既不方便传递,也不方便管理。这时候就可以使用 struct 打包成一个“学生类型”:
struct Student { //定义了一个结构体类型,叫 struct Student//里面包含 3 个“成员变量”char name[20];int age;float score; };//使用方式 struct Student s1 = {"Alice", 18, 95.5}; //现在 s1 就是一个“学生对象”,里面同时有名字、年龄、成绩三样东西。//访问方式 printf("%s 的年龄是 %d,成绩是 %.1f\n", s1.name, s1.age, s1.score);
-
在内存中表示为:
偏移地址 内容 类型 大小 +0 name[20] char[20] 20字节 +20 age int 4字节 +24 score float 4字节 总计 28字节(单个字节最大为4,对齐后可能是28+4=32字节) - 也就是说,一个结构体是一块连续的内存区域,里面按顺序放着它的每个成员。
总结
用途 | 说明 |
---|---|
打包数据 | 把多个不同类型的变量组合成一个整体 |
自定义类型 | 可创建新的“复合类型”供多处复用 |
便于传参与管理 | 可以整体传给函数或数组中存储 |
struct
是 C 语言中用来创建“自定义复合类型”的修饰符,能把多种不同类型的变量打包成一个整体,让代码更清晰、可扩展。