结构体3之结构体嵌套
Posted L的存在
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体3之结构体嵌套相关的知识,希望对你有一定的参考价值。
注意:
1结构体内部再次定义一个结构体 但是没有创建结构体的实例
也就是说再次定义的结构体内部的变量会被当做母结构体的成员变量
1 struct tianchao 2 { 3 int data; 4 char name[24]; 5 struct beijing//结构体内部再次定义一个结构体 但是没有创建结构体的实例 6 //也就是说再次定义的结构体内部的变量会被当做母结构体的成员变量 7 { 8 char str[100]; 9 int num; 10 }; 11 }; 12 13 void mainww() 14 { 15 struct tianchao t1; 16 //t1.这里按照道理是可以有四个变量 但是在此不可以 应该是编译器的问题 17 18 //是没有问题 19 /*t1.data = 100; 20 t1.num=66; 21 sprintf(t1.name,"goa"); 22 sprintf(t1.str,"gob");*/ 23 } 24 25 struct tianchao 26 { 27 int data; 28 char name[24]; 29 struct beijingA结构体 30 31 { 32 char str[100]; 33 int num; 34 }b1;//内部定义的第一种方式 35 struct beijingA结构体 b2;//内部定义的第二种方式 36 }; 37 38 void main() 39 {}
1 //struct china 2 //{ 3 // int data; 4 // char name[100]; 5 // struct guiyang 6 // { 7 // char str[100]; 8 // int num; 9 // }a1;//不清楚为什么必须加上a1 编译器才识别 10 //}; 11 //void main() 12 //{ 13 // struct china c1; 14 // c1.a1.num = 200; 15 // sprintf(c1.a1.str,"ad"); 16 // printf("%d,%s",c1.a1.num,c1.a1.str); 17 // 18 // getchar(); 19 //} 20 //方式二 21 struct china 22 { 23 int data; 24 char name[100]; 25 //给结构体内部在此定义一个结构体,创建结构体变量,这个变量会直接当作成员 26 //但是没有创建结构体的实例 27 //再次定义的结构体内部的变量 会被当作母结构体的成员变量 28 struct guiyang 29 { 30 char str[100]; 31 int num; 32 }a1; 33 struct guiyang b1; 34 }; 35 void main() 36 { 37 struct china c1; 38 c1.b1.num = 200; 39 sprintf(c1.b1.str,"ad"); 40 printf("%d,%s",c1.b1.num,c1.b1.str); 41 42 getchar(); 43 }
以上是关于结构体3之结构体嵌套的主要内容,如果未能解决你的问题,请参考以下文章
C 语言结构体 ( 结构体中嵌套二级指针 | 为 结构体内的二级指针成员 分配内存 | 释放 结构体内的二级指针成员 内存 )
(60) 结构体指针结构体变量嵌套结构体指针嵌套函数指针数组指针指针数组typedef 综合运用
C 语言结构体 ( 结构体中嵌套一级指针 | 分配内存时先 为结构体分配内存 然后再为指针分配内存 | 释放内存时先释放 指针成员内存 然后再释放结构头内存 )