C语言(结构体和共同体)
2021-02-17 18:18
标签:访问 int sof 声明 不同类 targe 返回值 框架 strong 结构体 **********了解********** 结构体数组:struct 结构体名称 数组名[长度]; 数组名是向数组第一个元素的地址(不为指针),所以数组名可以直接赋值给指针; 结构体指针:结构体的变量名不是结构体的地址;所以需要取地址;(struct Book *pt=&book;) 结构体指针访问结构体:1、先对指针解引用,然后用‘.’正常访问结构体成员【 (*pt).price 注:‘.‘ 优先级高于 ‘*‘ 】 注:一个结构体是可以直接赋值给另一个结构体的;即:book1=book2;(前提是两个结构体的类型必须相同)所以结构体变量就可以作为参数返回值进行传递;由于结构体所占内存比较大会影响程序效率,所以一般不会直接传递结构体,而是传递结构体指针; 传值时可以直接传结构体的地址过去:如:fun(&book); C语言(结构体和共同体) 标签:访问 int sof 声明 不同类 targe 返回值 框架 strong 原文地址:https://www.cnblogs.com/TianLiang-2000/p/12697074.html
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字节)
动态的申请结构体:使用 malloc 函数为结构体分配存储空间;
struct Book book=( struct Book * )malloc ( sizeof( struct Book));