C 语言中结构体的定义和使用
文章目录
1. 声明
一般形式
struct 结构名{
成员列表
};
struct关键字表示接下来是一个结构
如:声明一个学生的结构
struct Student{ //声明结构体 |
2. 定义
struct 结构体名 结构体变量名;
struct Student stu1; //定义结构体变量 |
1. 结构体变量的定义可以放在结构体的声明之后:
struct Student{ //声明结构体 |
2. 结构体变量的定义也可以与结构体的声明同时
struct Student{ |
3. 可以使用匿名结构体来定义结构体变量
struct { //没有结构名 |
3. 访问
虽然结构类似一个数组,只是数组元素的数据类型是相同的,而结构中元素的数据类型是可以不同的。但结构不能像数组那样使用下标去访问其中的各个元素,而应该用结构成员运算符点(.)。即访问成员的一般形式是:
结构变量名 . 成员名
如 stu1 . name 表示学生stu1的姓名。
struct Birthday{ //声明结构体 Birthday |
则用 stu1.birthday.year 访问出生的年份。
4. 初始化
struct Student stu1, stu2; //定义结构体变量 |
详细初始化过程查看参考1
5. 结构体数组
结构类型作为一种数据类型,也可以像基本数据类型那样,作为数组的元素的类型。元素属于结构类型的数组成为结构型数组。
- 定义
struct 结构名 { |
struct Student{ //声明结构体 Student |
- 初始化
struct Student stu[2] = {{"Mike", 27, 91},{"Tom", 15, 88.0}}; //定义结构数组的同时进行初始化 |
6. 结构体与指针
当一个指针变量用来指向了一个结构变量,这个指针就成了结构指针变量。
结构指针变量中的值是所指向的结构变量的首地址。可以通过指针来访问结构变量。
1)定义结构指针变量的一般形式:
struct 结构名 * 结构指针变量名
struct Student *pstu; //定义了一个指针变量,它只能指向Student结构体类型的结构体变量 |
结构指针变量的定义也可以与结构体的定义同时。而且它必须先赋值后使用。
数组名表示的是数组的首地址,可以直接赋值给数组指针。但结构变量名只是表示整个结构体变量,不表示结构体变量的首地址,所以不能直接赋值给结构指针变量,而应该使用 & 运算符把结构变量的的地址赋值给结构指针变量。即:
pstu = stu1;//false |
注意:结构名、结构变量名、结构体体指针的区别
2)通过结构指针间接访问成员值
访问的一般形式:
(*结构指针变量). 成员名 或 结构指针变量 -> 成员名
如:
(*pstu).name |
注意(pstu)的小括号不能省略,因为成员符“.”优先级为1,取地址符“”优先级为2,去掉括号就相当于*(pstu.name)了。

