1:结构体
1.1 定义结构体的方式
1)c++允许将声明结构变量时省略struct ,但是c语言必须要求添加
2) 将定义和变量声明分开更加易于阅读和理解
3)定义方式4中由于没有类型名称,所以以后无法创建这种类型的变量,不建议使用此方式
4)结构体与数组的区别:数组只能创建一种类型的变量,但是结构体可以创建多种类型的变量。
5) 结构体与类的区别 :结构体的内的成员都是公用的,但是类成员有公有和私有。其实结构体是类的基石。将接近oop
6)将结构体声明在函数内部还是外部声明的区别:外部声明可以被下面的所有函数使用
//text
struct A
{
char name[10];
int age;
}
struct B
{
char name[10];
int age;
}mr_tat,_mr_hat; //define two B variables
struct C
{
char name[10];
int age;
}mr_tat =
{
char name[10];
int age;
}
struct //no define tag
{
char name[10];
int age;
}pot;// because not define the
定义结构体后就可以创建这种类型的变量 如:A hat;
1.2 结构体初始化:
A hat =
{
"ahbnd",
1.99
};
或者是
A cat = {"ckjdf",9};
对应的成员变量:hat.age;等。
1.3 结构数组
1.3.1 可以创建元素为结构体的数组,如要创建一个包含100个A结构的数组: A gitfs[100]; 则每个元素(gifts[0]到gifts[99]都是A的对象);
可以进行如下操作: cin >> gifts[0].age; 等
1.3.2 初始化结构数组
A gifts[2] = {{"hat",9}, {"dog",13}};
2: 枚举
2.1 enum定义
提供了另一种创建符号常量的方式。
如:enum spectrum {red, orange,yellow,green, blue, violet, indigo}; 该式子 将spectrum作为一个新的类型。red yellow 作为符号常量,对应的数值为0~~~6
1) 对于枚举,只定义了赋值运算 如 在不进行转换的时候 band = red;//valid band = 2000;//not valid
2)没有为枚举定义算术运算 如; band = red + blue;// not valid
2.2 设置枚举量的值
1) 指定的值必须是整数, 如: enum bits{one = 1, two = 2, four = 4, eight = 8 };
2)也可以只显式的定义其中一些枚举量 enum big {first, second = 100, third}; 其中first默认情况下为0,后面没有初始化的值将比前面的大1,因此third= 101
3) 枚举的强制类型转换 如band = spectrum(3);
3 结构体中含有枚举
///
enum Module
{
ID_LINE,
ID_COVER,
ID_RIVERT,
ID_LAYOFF
};
struct StartModule
{
Module RunModule;
CString m_strClass;
BOOL m_bFinish;
BOOL m_bInilize;
BOOL m_bStart;
BOOL m_bEndWork;
};
//
//m_RunModule 是StartModule的对象
void CMachineCtrl::SetModuleInfo(int nID,CString Name,BOOL bFinish,BOOL bStart,BOOL bInilize,BOOL bEndWork)
{
m_RunModule.m_bFinish = bFinish;
m_RunModule.m_bInilize = bInilize;
m_RunModule.m_bStart = bStart;
m_RunModule.m_strClass = Name;
m_RunModule.m_bEndWork = bEndWork;
m_RunModule.RunModule = Module(nID);//nID 是int类型,进行强制类型转换
}
注; 参考资料为; c++ primer plus 第四章 部分内容