从C开始_结构体_嵌套结构

有时候,一个结构中含有另一个结构是十分方便的,其实这个我不知道该怎么说,感觉不是怎么难懂,这样吧,我看到一个不错的例子,我放上来,你们看看,其实耐心看完你们差不多就懂了(●'◡'●)

随便你们也可复习复习const(常量)[对于const我还没有讲,不过你们都应该学过的,没学过的可以看看这个,超详细的给你们传送门[点我.点我.]]

____________________________________________________________________________________________

<span style="font-family:Comic Sans MS;">#include<stdio.h>
#define LONG 20
const char *msgs[5] = 
{
	"	Thanks you for the wonderful wvwning, ",
	"You certainly provr that a ",
	"is a special kind of guy. We must get together",
	"oyer a delicious ",
	" and have a few laughs"
};
struct names{			                /*名字是由俩个单词构成的 这是第一个结构 */ 
	char first[LONG];
	char last[LONG];
};
struct guy {                                     /*第二个结构,也是主结构*/ 
    struct names handle;                         /* 吧第一个结构嵌入进去了 */ 
    char favfood[LONG]; 
    char job[LONG]; 
    float income; 
};  
int main (void) 
{ 
    struct guy fellow = {    <span style="white-space:pre">		</span> /* 初始化一个结构变量,注意,在函数的局部才能用变量进行我们初始化*/ 
        {"Ewen", "Villard"}, <span style="white-space:pre">			</span>  /* 这个语句是吧这俩个字符串按顺序储存进第一个结构的俩个数组 */ 
        "grilled salmon",    <span style="white-space:pre">		</span> <span style="white-space:pre">	</span>  /* 这个字符串将会被储存到第二个结构的favfood数组里 */ 
        "personality coach",  <span style="white-space:pre">			</span>  /* 这个字符串将会被储存到第二个结构的job数组里 */ 
        58112.00             <span style="white-space:pre">		</span> <span style="white-space:pre">	</span>  /*这个浮点数将会被储存到第二个结构的income里 */ 
      };   <span style="white-space:pre">				</span>          /* 注意给结构成员初始化分隔的规则是以【逗号】分个成员 而最后一个                                                 不需要逗号这个在“从C开始_结构体_初始化和对成员的访问”里有提到*/  
    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; 
} </span>

———————————————————————————————————————————————————

运行结果是这样的:

Dear Ewen,  
    Thank you for the wonderful evening,Ewen. 
You certainly prove that apersonality coach 
is a special kind of guy, We must get together 
over a delicious grilled salmon and have a few laughs.  
                                        See you soon, 
                                        Shalala  


初略地说说吧,首先,注意在结构声明中是如何创建嵌套结构的,他简单地进行声明,就像声明一个int变量一样

——struct names handle;

这个声明表示handle是一个struct names类型的变量。当然,文件在其之前也应该包含了对结构name的声明,

其次注意如何访问我们的嵌套结构里的成员:只需要使用俩次点运算符就行了

——printf ("Dear %s,\n\n",fellow.handle.first)

这个语句可以这么看:

(fellow.hand).first

也就是说,我们的计算机先找到了fellow,然后找到了fellow的成员handle,进而找到了handle的成员first!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值