C++ 结构体/枚举总结

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 第四章 部分内容


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值