📜  C中的嵌套结构体(1)

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

C中的嵌套结构体

在C语言中,结构体可以嵌套其他结构体,这样可以使结构体更具有灵活性和可扩展性。本文将介绍C语言中的嵌套结构体用法,以及如何定义和访问嵌套结构体。

定义嵌套结构体

嵌套结构体就是结构体中包含其他结构体的成员,例如:

struct student {
    char name[20];
    int age;
    struct address home_address;
};

struct address {
    char city[20];
    char street[50];
    int house_no;
};

在这个例子中,嵌套结构体addressstudent结构体的一个成员。因此,定义address结构体必须在student结构体定义之前。

访问嵌套结构体

要访问嵌套结构体的成员,可以使用两个.运算符。例如,要访问student结构体中的home_address结构体中的city成员,可以使用以下代码:

struct student s;
strcpy(s.home_address.city, "New York");

还可以使用指向嵌套结构体的指针来访问结构体成员,例如:

struct student *p;
p = &s;
strcpy(p->home_address.city, "New York");
嵌套结构体的初始化

初始化嵌套结构体的方法与其他结构体相同。例如,初始化student结构体中的home_address结构体的代码如下:

struct student s = {
    "John",
    20,
    {"New York", "5th Avenue", 10}
};
示例程序

以下是一个完整的示例程序,演示如何定义和访问嵌套结构体:

#include <stdio.h>
#include <string.h>

struct address {
    char city[20];
    char street[50];
    int house_no;
};

struct student {
    char name[20];
    int age;
    struct address home_address;
};

int main()
{
    struct student s = {
        "John",
        20,
        {"New York", "5th Avenue", 10}
    };
    printf("Name: %s\n", s.name);
    printf("Age: %d\n", s.age);
    printf("Home address: %s %s %d\n", s.home_address.city, s.home_address.street, s.home_address.house_no);
    return 0;
}

输出结果为:

Name: John
Age: 20
Home address: New York 5th Avenue 10
总结

在C语言中,结构体可以嵌套其他结构体,这样可以使结构体更具有灵活性和可扩展性。通过本文的介绍,您应该已经掌握了如何定义和访问嵌套结构体的方法。希望本文对您有所帮助!