C 语言中的 struct

在前面我们学习了很多种类的变量,每个变量都会有一种类型。但是如果我们需要定义一个变量,可以同时存储不同的类型的变量,那会在很多场合下很方便的使用。比如我们常见的通信录,里面会包含很多信息,比如姓名,电话号码,邮箱地址等信息。这里面就会涉及到整数,字符串等等。如果每个人建立的时候都分别声明一次其中的变量,那么工作量就会非常的大,也很容易出现错误。

那么怎么解决这种情况呢?这就是今天我们要讲解的内容。

1. 定义声明 struct

struct 可以将多个不同或者相同的变量组合起来形成一个变量集合。这样就可以解决如通信录之类应用中需要多个不同类型变量组合在一起的需求。我们只要定义一次这个集合,就可以利用这个集合来定义新的变量。被这个集合定义的变量,会包含里面定义时所包含的变量类型。

struct Contacts
{
    char name[100];
    int age;
    char mobile[12];
};

上面的例子展示了如何声明一个 struct 。通过一个关键词 struct 后面加上这个结构体的名称,这个结构体的内部则是组成的变量。

当然你可以将定义结构体和使用这个结构体声明变量一起进行。如下:

struct Contacts
{
    char name[100];
    int age;
    char mobile[12];
} person1, person2, person3;

也可以单独使用结构体来定义变量。

struct Contacts person1, person2, person3;

2. 初始化

初始化一个结构体有点类似一个数组的初始化,就是将里面的变量元素按照顺序一次赋值就可以了。

struct Contacts person1 = {"John", 30, "123456789000"};

3. 使用 struct

当我们声明一个结构体变量后就要对其赋值,那么如何访问这个集合中的变量呢?

可以使用英文中的句号 . ,这个代表了结构体中的成员访问。

 printf("Name: %s, Age: %d, mobile: %sn", person1.name, person1.age, person1.mobile);

4. 示例程序

#include <stdio.h>

int main()
{
    struct Contacts
    {
        char name[100];
        int age;
        char mobile[12];
    };

    struct Contacts person1 = {"John", 30, "123456789000"};

    struct Contacts person2 = {"Tom", 33, "123456789011"};

    struct Contacts person3 = {"Ann", 23, "123456789022"};

    printf("Name: %s, Age: %d, mobile: %sn", person1.name, person1.age, person1.mobile);
    printf("Name: %s, Age: %d, mobile: %sn", person2.name, person2.age, person2.mobile);
    printf("Name: %s, Age: %d, mobile: %sn", person3.name, person3.age, person3.mobile);

    return 0;
}

运行结果:

Name: John, Age: 30, mobile: 123456789000
Name: Tom, Age: 33, mobile: 123456789011
Name: Ann, Age: 23, mobile: 123456789022

5. 小结

结构体最为一种变量的集合,可以将各种类型的变量组成一个集合。方便我们完成需要多种变量组合才能完成的操作。其实几个的应用非常的广泛,除了通讯录,还有比如系统存储鼠标位置,画笔,一些常见的数据结构等等。