黑马程序员技术交流社区
标题: 结构体 结构体数组 结构体指针 总结 [打印本页]
作者: Makeit 时间: 2015-11-13 01:45
标题: 结构体 结构体数组 结构体指针 总结
[结构体的基本用法]
一 含义 数据类型,构造类型,里面可以存储不同类型的数据
二 作用 存储不同类型的数据
三 怎么用
结构体本身定义 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
作者: normalwzh 时间: 2015-11-13 13:41
值得学习ing!
作者: zhecipinle 时间: 2015-11-14 13:14
学习一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |