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