[结构体的基本用法] 一 含义 数据类型,构造类型,里面可以存储不同类型的数据 二 作用 存储不同类型的数据 三 怎么用 结构体本身定义 struct 结构体名{类型 变量名;} ; 用结构体定义变量 struct 结构体类型 变量名; 赋值 变量名.结构体元素变量名=数据1; 使用 变量名.结构体元素变量名
先定义结构体类型(struct 结构体名),再用结构体类型定义一个此种类型的变量
定义结构体三种方法: 第一种 先定义结构体 再用结构类型定义变量 逐个赋值; 第二种 边定义边赋值;
第三种 匿名类型结构体(一次性使用); file:///var/folders/fn/36q26c8x5292vh_tb8ncmmxc0000gn/T/WizNote/69590bea-4727-47c5-b78e-9d02e6f6e7a2/index_files/5c2a55ae-96b7-4573-9f98-6bf4e53a5ed6.png 定义好之后,不能批量化赋值,若要批量化赋值,在赋值的前面加上强转类型; file:///var/folders/fn/36q26c8x5292vh_tb8ncmmxc0000gn/T/WizNote/69590bea-4727-47c5-b78e-9d02e6f6e7a2/index_files/faacfafa-1b53-48e8-8d41-db18db6497e8.png
四 什么时候用 相关联 不同类型数据 连起来 五 特点 同一作用域 不能重复定义结构体(同名结构体,内部元素不同也不行),除了匿名结构体 函数内外可以同时定义同名结构体,使用时,类似全局变量和局部变量的关系,就近原则 可在定义结构体类型时同时定义结构体变量名,可定义匿名类型结构体; 嵌套定义 嵌套结构体 用一个结构体类型 定义另外一个结构体类型的 结构体元素变量 内部不再加{}, 则一个挨着一个赋值,最后不够补null或0;
[结构体数组] 一 含义 是数组,每个元素都是结构体
二 作用 存储多个有关联的结构体; 三 怎么用 定义及赋值 定义结构体类型
用结构体类型定义各种变量并赋值 用结构体类型定义数组并赋值 使用 数组元素.结构体元素 arr[0].name 数组元素和结构体名等价 可以相互赋值 arr[0]=per2; 四 什么时候用 当需要存储多个有关联的结构体,并作为一个整体使用时 五 特点 数组内 结构体类型一致
file:///var/folders/fn/36q26c8x5292vh_tb8ncmmxc0000gn/T/WizNote/69590bea-4727-47c5-b78e-9d02e6f6e7a2/index_files/12d5e9bb-a9c5-4e9f-a9e6-8f2b230631be.png
[结构体指针] 一 含义 是指针 类型为结构体
二 作用 存储结构体的地址,并操作地址对应的结构体空间的数据
三 怎么用 定义结构体类型 用结构体类型定义变量 用结构体类型定义指针并赋值 struct 结构体名 *指针名=&变量名; 取值 (*指针名).结构体元素名 指针名->结构体元素名(结构体独有) 赋值 ( *指针名).结构体元素名=新值; 指针名->结构体元素名=新值
使用时,* 加 指针名p 代表 指针所指单元的内容(即所指变量); 指针名p 代表 指针所指单元的地址
四 什么时候用 当需要指针操作结构体时
五 特点 1 结构体名并不代表第一个元素的指针,指针移动一般按首字节移动,有时强制转化也不行,建议不要用指针移动,来打印结构体中的元素. file:///var/folders/fn/36q26c8x5292vh_tb8ncmmxc0000gn/T/WizNote/69590bea-4727-47c5-b78e-9d02e6f6e7a2/index_files/3d7f3815-1b50-4a79-8a19-2290cb0565bc.png
结构体分配内存空间 对齐原则 每个元素的偏移量(当前元素首地址距离整个结构体首地址的字节数)必须是自己占有字节数的整数倍(如果不够补齐上一个元素的字节数) 整个结构体的字节数是必须是其最大元素所占字节的整数倍.如果不够,最后一个字节填充字节.
file:///var/folders/fn/36q26c8x5292vh_tb8ncmmxc0000gn/T/WizNote/69590bea-4727-47c5-b78e-9d02e6f6e7a2/index_files/85135ffe-7273-4ae4-92d9-cc4c16df08b6.png
|