📜  数据结构-结构体(1)

📅  最后修改于: 2023-12-03 14:54:56.507000             🧑  作者: Mango

数据结构-结构体

什么是结构体?

结构体是C语言中自定义数据类型的一种,它允许程序员将不同类型的变量组合在一起,形成一个更大的数据结构。结构体中可以包含多个成员,每个成员可以是任意类型的变量,包括基本类型、指针类型和其他结构体类型。结构体的语法如下:

struct 结构体名 {
    成员类型1 成员名1;
    成员类型2 成员名2;
    ...
};

例如,我们可以定义一个包含学生信息的结构体:

struct Student {
    char name[50];
    int age;
    float score;
};

这个结构体包含了三个成员:名字、年龄和分数。我们可以用这个结构体来表示一个学生的数据。

如何使用结构体?

我们可以像使用基本类型的变量一样使用结构体类型的变量,例如:

struct Student stu1;

这行代码定义了一个名为stu1的变量,它的类型是Student结构体。我们可以通过点号(.)访问结构体的成员,例如:

strcpy(stu1.name, "张三");
stu1.age = 18;
stu1.score = 89.5;

这个代码片段将stu1的名字设置为“张三”,年龄设置为18,分数设置为89.5。

结构体的高级用法
结构体嵌套

结构体可以嵌套定义,一个结构体中的某个成员可以是另外一个结构体。例如:

struct Address {
    char city[20];
    char street[50];
};

struct Person {
    char name[50];
    int age;
    struct Address address;
};

这个结构体包含了一个Address类型的成员address,它在Person结构体中作为一个整体被使用。

结构体指针

与基本类型一样,结构体也有对应的指针类型。结构体指针变量用来存储结构体变量的地址。例如,我们可以用下面的代码定义一个结构体指针变量:

struct Student *pstu;

这样我们就可以通过指针访问结构体成员,例如:

pstu = &stu1;
printf("姓名:%s\n年龄:%d\n分数:%f\n", pstu->name, pstu->age, pstu->score);

这个代码片段将结构体指针变量pstu赋值为stu1的地址,然后使用箭头(->)访问结构体成员。

结构体数组

结构体也可以定义成数组类型,我们可以用下面的代码定义一个包含多个学生信息的数组:

struct Student stuArr[5];

这个代码定义了一个包含5个元素的数组,每个元素都是一个Student类型的结构体。我们可以通过索引访问结构体数组中的元素,例如:

stuArr[0].age = 18;
stuArr[1].age = 19;

这个代码片段将数组中第一个元素的年龄设置为18,第二个元素的年龄设置为19。

总结

结构体是C语言中一种自定义数据类型,它可以将不同类型的变量组合在一起,形成一个更大的数据结构。结构体可以包含多个成员,每个成员可以是任意类型的变量,包括指针类型和其他结构体类型。结构体可以嵌套定义,一个结构体中的某个成员可以是另外一个结构体。结构体也有对应的指针类型和数组类型,程序员可以根据需要使用这些高级特性来处理复杂的数据结构。