每天一点C++(之三)

每天一点C++(之三)

每天一点C++(之三)

之前的一天因为有科目考试,所以暂停了一天的基础积累。这些每天一点C++只是我自己在看回基础书籍的时候感觉C++11中有点特别的新特性,还有自己之前没有注意到的细节的积累。(PS:我只是一个菜鸟,但是,我决定要坚持积累。希望我能够有变成大神的那一天。hoho!!)

数组

正常的编译器是不会检查数组使用的下标是否有效,因此假如下标的值大于数组长度的话,编译运行是没有错误的。但是在运行过程中,可能会破坏数据或代码。也可能导致程序异常终止。这种错误如果发生在大型程序中也会让我们难以找出错误所在吧!(PS:sizeof运算符用在数组名上得出的是数组中的字节数哦!)

C++11中数组的初始化有几点改变,其中禁止缩窄转换是我觉得应该注意的地方,也就是说,在数组初始化的时候列表中不能出现浮点数转换成整形,也不能出现超出变量取值范围的情况。

结构体(struct)、共用体(union)、枚举(enum)

结构体

C++中的结构体,其实就是一种数据格式,将各种数据类型包含在一起来储存数据。而C++的结构体中还可以包含成员函数(C中是不允许的哦),但是这样一来结构体便和类差不多了。(其中的一些处理机制还是不一样的,但是,何必为此而创建一个类似于类的结构体呢?)

在基础书籍中有提到一个叫结构中的位字段,与C语言一样,C++允许指定占用特定位数的结构成员,使得创建与某个硬件设备上的寄存器对应的数据结构方便许多。其中,字段的类型应该为整形或枚举型,加上冒号,后再加上一个指定使用的位数的数字。例子:

struct torgle_register 
{
    unsigned int SN : 4; 
    unsigned int : 4;
};

共用体

共用体,顾名思义就是说能够使得自己被用作其他的类型,可以轻易储存不同的数据类型,但是要记住的是,只能同时储存其中的一种类型。因为每次只能储存一个值,那么当然只能够以最大的成员长度为自身长度了。共用体可以匿名使用,如在结构体中定义匿名共用体,在调用时,就是指当前的成员。

共用体常用于节省内存,但是相对于今天的GB级系统内存来说,一般没有必要,而对于嵌入式的系统来说就不是了。最后说明一下,共用体常用于操作系统数据结构或硬件数据结构。

枚举

在我眼中的枚举其实就是一连串的数字被定义为用符号表示,而程序中,枚举类型都常被用来定义相关的符号常量,而非新类型。在枚举类型中,一般是第一个的值为0,但是也可以认为地赋初始值它,其后没有被赋值的就会被赋值为(前一变量的值+1).而在不强制类型转换的情况下,只能将定义枚举时使用的枚举量赋值给同种枚举类型的变量。枚举类型,只定义了赋值运算符。而枚举类型能够被提升为int类型,反过来的自动转换却是不行的。

posted @ 2014-04-19 00:08  JMsphere  阅读(326)  评论(0)    收藏  举报