简单问题9 thanks 急

来源:百度知道 编辑:UC知道 时间:2024/05/31 22:37:43
#include<iostream>
using namespace std;
main()
{
struct children
{
char boy[10];
char girl[10];
};
struct family
{
char husband[10];
char wife[10];
struct children kenneth;
};
struct children kenneth={"Jeff","Sally"};
struct family krieger={"Gene","Sara","Jack","Jill"};
cout<<"krieger.kenneth.boy:"
<<krieger.kenneth.boy<<"\n";
cout<<"krieger.kenneth.girl:"
<<krieger.kenneth.girl<<"\n";
system("pause");
}

为什么这个程序输出的答案是
krieger.kenneth.boy:Jack
krieger.k

struct children kenneth={"Jeff","Sally"};
这一句声明 变量kenneth,根据struct children的定义,
kenneth.boy为 "jeff",kenneth.girl为 "Sally"

struct family krieger={"Gene","Sara","Jack","Jill"};
声明变量 krieger,根据struct family的定义,
krieger.kenneth.boy为 "Jack"
krieger.kenneth.girl为 "Jill"

输出时,使用的是krieger变量,所以输出是 jack and Jill

需要注意的是,kenneth有两个含义,一个是变量,一个是struct family里的一个字段,是两个不同的意义。

补充:
krieger.kenneth.boy中,点的意思是取其中的元素。
那句赋值确实是多余的,没有用到。

你输出的是:
krieger.kenneth.boy
krieger.kenneth.girl

而不是:
kenneth.boy
kenneth.girl