c语言结构体3之结构体嵌套

时间:2023-03-09 15:21:18
c语言结构体3之结构体嵌套

注意:

1结构体内部再次定义一个结构体 但是没有创建结构体的实例
  也就是说再次定义的结构体内部的变量会被当做母结构体的成员变量

 struct tianchao
{
int data;
char name[];
struct beijing//结构体内部再次定义一个结构体 但是没有创建结构体的实例
//也就是说再次定义的结构体内部的变量会被当做母结构体的成员变量
{
char str[];
int num;
};
}; void mainww()
{
struct tianchao t1;
//t1.这里按照道理是可以有四个变量 但是在此不可以 应该是编译器的问题 //是没有问题
/*t1.data = 100;
t1.num=66;
sprintf(t1.name,"goa");
sprintf(t1.str,"gob");*/
} struct tianchao
{
int data;
char name[];
struct beijingA结构体 {
char str[];
int num;
}b1;//内部定义的第一种方式
struct beijingA结构体 b2;//内部定义的第二种方式
}; void main()
{}
 //struct china
//{
// int data;
// char name[100];
// struct guiyang
// {
// char str[100];
// int num;
// }a1;//不清楚为什么必须加上a1 编译器才识别
//};
//void main()
//{
// struct china c1;
// c1.a1.num = 200;
// sprintf(c1.a1.str,"ad");
// printf("%d,%s",c1.a1.num,c1.a1.str);
//
// getchar();
//}
//方式二
struct china
{
int data;
char name[];
//给结构体内部在此定义一个结构体,创建结构体变量,这个变量会直接当作成员
//但是没有创建结构体的实例
//再次定义的结构体内部的变量 会被当作母结构体的成员变量
struct guiyang
{
char str[];
int num;
}a1;
struct guiyang b1;
};
void main()
{
struct china c1;
c1.b1.num = ;
sprintf(c1.b1.str,"ad");
printf("%d,%s",c1.b1.num,c1.b1.str); getchar();
}