📜  C-结构(1)

📅  最后修改于: 2023-12-03 15:29:55.724000             🧑  作者: Mango

C 结构体

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;

将结构体变量 stscore 成员设置为 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 位。

可以使用位运算符 &| 读取和设置位字段的值。

参考文献