C Primer Plus(6) 中文版 第14章 结构和其他数据形式 14.5 嵌套结构

发布于:2023-01-05 ⋅ 阅读:(599) ⋅ 点赞:(0)

14.5 嵌套结构
有时,在一个结构中包含另一个结构(即嵌套结构)很方便。
程序清单14.3 friend.c程序
// friend.c -- example of a nested structure
#include <stdio.h>
#define LEN 20
const char * msgs[5] =
{
    "    Thank you for the wonderful evening, ",
    "You certainly prove that a ",
    "is a special kind of guy. We must get together",
    "over a delicious ",
    " and have a few laughs"
};

struct names {                     // first structure
    char first[LEN];
    char last[LEN];
};

struct guy {                       // second structure
    struct names handle;           // nested structure
    char favfood[LEN];
    char job[LEN];
    float income;
};

int main(void)
{
    struct guy fellow = {   // initialize a variable
        { "Ewen", "Villard" },
        "grilled salmon",
        "personality coach",
        68112.00
    };
    
    printf("Dear %s, \n\n", fellow.handle.first);
    printf("%s%s.\n", msgs[0], fellow.handle.first);
    printf("%s%s\n", msgs[1], fellow.job);
    printf("%s\n", msgs[2]);
    printf("%s%s%s", msgs[3], fellow.favfood, msgs[4]);
    if (fellow.income > 150000.0)
        puts("!!");
    else if (fellow.income > 75000.0)
        puts("!");
    else
        puts(".");
    printf("\n%40s%s\n", " ", "See you soon,");
    printf("%40s%s\n", " ", "Shalala");
    
    return 0;

/* 输出:

*/

注意如何在结构中创建嵌套结构。和声明int类型一样,进行简单的声明:
struct names handle;
其次,诸如如何访问嵌套结构的成员,这需要使用两次点运算符:
fellow.handle.first;
.运算符的结合性是从左往右的。 


网站公告

今日签到

点亮在社区的每一天
去签到