📅  最后修改于: 2023-12-03 15:29:55.724000             🧑  作者: Mango
C 结构体是一种将不同类型的变量组合在一起的用户自定义数据类型。它允许程序员创建自己的数据类型,这些数据类型可以由一个或多个不同类型的变量组成。
结构体定义以关键字 struct
开始,后面跟着结构体的名称。结构体的主体包含在一对大括号中,其中定义了结构体中包含的变量的类型和名称。以下是一个简单的结构体示例:
struct student {
char name[50];
int age;
float score;
};
定义了一个名为 student
的结构体,它包含了一个 char
类型的数组 name
、一个 int
类型的变量 age
和一个 float
类型的变量 score
。
要访问结构体的变量,需要使用结构体变量名和成员运算符 .
,后跟要访问的变量名称。例如,要访问结构体 student
中的变量 score
,可以使用以下语法:
struct student st;
st.score = 90.5;
将结构体变量 st
的 score
成员设置为 90.5
。
结构体指针是指向结构体的指针变量。使用结构体指针可以更轻松地访问结构体成员。例如,要设置结构体 student
的变量 score
的值,可以使用以下语法:
struct student *pst;
pst = &st;
pst->score = 90.5;
将指针 pst
指向结构体变量 st
,然后使用箭头运算符 ->
访问结构体 student
中的变量 score
。
结构体数组是一种包含结构体变量的数组。它可以按照与普通数组相同的方式进行声明和初始化。以下是一个结构体数组的例子:
struct student students[10] = {
{"Alice", 18, 95.5},
{"Bob", 19, 88.5},
{"Cathy", 20, 73.5},
//...
};
上面的例子定义了一个名为 students
的结构体数组,其中包含了 10 个类型为 student
的结构体变量。可以像普通数组一样使用索引访问结构体数组的元素:
students[0].score = 95.5;
以上代码将结构体数组 students
的第一个元素的 score
成员设置为 95.5
。
位字段是一种用于存储二进制位序列的结构体成员类型。它的语法如下:
struct bit_fields {
unsigned int a: 1; // 占用 1 位
unsigned int b: 2; // 占用 2 位
unsigned int c: 3; // 占用 3 位
};
上面的例子定义了一个名为 bit_fields
的结构体,其中包含了三个位字段成员:a
(占用 1 位)、b
(占用 2 位)和 c
(占用 3 位),它们的总大小是 6 位。
可以使用位运算符 &
和 |
读取和设置位字段的值。