浏览:次 2019-11-30 14:01
本人学习C++的过程经验及总结,本文内容:
结构体
结构类型的定义:
结构体(struct)简称“结构”
用户自定义的构造类型
由若干“成员”组成(基本数据类型或者其他构造类型)
2struct 结构名
{
// 成员列表
类型说明符 成员名;
};
先定义结构,再说明结构变量:
struct 结构名 结构体变量名;
在定义结构类型的同时说明结构变量
直接说明结构变量,可以不指定结构名
结构变量成员的表示方法:
结构变量名.成员名
结构体指针->成员名
结构变量的赋值与使用
CHARACTER boy1;
boy1.uID=1000;
boy1.uLevel=0;
结构变量的初始化
CHARACTERboy={1001,”Tom”,1,6};
7结构数组
结构指针变量的声明,结构指针变量可以指向一个结构数组,这时结构指针变量的值是整个结构数组的首地址。
struct 结构名 *结构指针变量名
通过结构指针变量访问结构变量成员
(*结构指针变量).成员名
结构指针变量->成员名
结构指针变量作函数参数:
在ANSIC标准中允许用结构变量作函数参数进行整体传送
但是传递结构体要需要拷贝所有成员,降低了程序的效率
最好的办法就是使用指针或引用:
void CombatStart(CHARACTER*pBoy1,CHARACTER *pBoy2)
{
…
}
指针变量占用的空间很小,拷贝指针变量高效
11为了能使CPU对变量进行高效快速的访问,变量的起始地址应该具有某些特性,即所谓的“对齐”(减少内存访问次数):
1、应用程序通常在地址中对齐结构成员。
2、一个字或双字操作数跨越了4字节边界,或者一个四字操作数跨越了8字节边界,被认为是未对齐的,从而需要两次总线周期来访问内存。
为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。
对字、双字和四字来说,自然边界分别是偶数地址,可以被4整除的地址,和可以被8整除的地址。
结构体在内存中的存储
根据结构体中的对齐,我们可以看一下下面那个结构体数据在内存中的存储。