C++ 结构体/枚举总结

来源:互联网 发布:易语言英语考试软件 编辑:程序博客网 时间:2024/06/05 04:40

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


0 0
原创粉丝点击