C语言(结构体和共同体)
结构体
- 结构体:主要用来组织不同类型的数据(注:结尾有分号)
- 结构体声明只是进行一个框架的描绘,不会直接在内存中分配空间,直到定义时才会分配空间
- 结构体声明:在结束的分号前加一个变量,相当于声明完这个结构体之后直接定义一个这种结构的变量
- 成员选择运算符(与 ‘.‘ 同属于第一优先级):‘->‘ 结构体指针->成员名【 pt->price 】
struct 结构体名称 { 结构体成员1; 结构体成员2; ...... } 变量名; //访问结构体成员:‘.’(点号运算符);如:book.title就是引用book结构体的title成员; //初始化结构体:struct Book book={"书名" , "作者",20};这种方法参数要与结构定义的成员一一对应;
struct Book book={ .price=20 };// 指定初始化元素; //结构体存储方式:结构体存储时用到对齐化处理,导致内存浪费; //如:3个变量类型:char,int,char(每个定义的结构占用12个字节,第一个char和第三个char与int内存对齐都用4个字节) // 3个变量类型:char,char,int(每个定义的结构占用8个字节,第一个char和第二个char合起来与int对应占用4字节)
**********了解**********
结构体数组:struct 结构体名称 数组名[长度];
数组名是向数组第一个元素的地址(不为指针),所以数组名可以直接赋值给指针;
结构体指针:结构体的变量名不是结构体的地址;所以需要取地址;(struct Book *pt=&book;)
结构体指针访问结构体:1、先对指针解引用,然后用‘.’正常访问结构体成员【 (*pt).price 注:‘.‘ 优先级高于 ‘*‘ 】
注:一个结构体是可以直接赋值给另一个结构体的;即:book1=book2;(前提是两个结构体的类型必须相同)所以结构体变量就可以作为参数返回值进行传递;由于结构体所占内存比较大会影响程序效率,所以一般不会直接传递结构体,而是传递结构体指针;
传值时可以直接传结构体的地址过去:如:fun(&book);
动态的申请结构体:使用 malloc 函数为结构体分配存储空间;
struct Book book=( struct Book * )malloc ( sizeof( struct Book));
相关推荐
专注前端开发 2020-08-16
ericasadun 2020-06-03
cmsmdn 2020-04-19
GoatSucker 2020-04-11
xuguiyi00 2020-04-11
GoatSucker 2020-04-10
shenwenjie 2020-03-03
lynjay 2020-02-28
cmsmdn 2020-02-22
sunnyJam 2020-02-18
linmufeng 2020-02-18
tydldd 2020-02-16
sunnyJam 2020-02-14
tangjikede 2020-01-30
KilluaZoldyck 2019-12-28
lynjay 2019-12-31
徐建岗网络管理 2019-12-24
cherayliu 2019-12-15