5.8 sizeof操作符
问题:引用类型是指什么?
笔记:对数组进行sizeof操作,所得为其存储空间大小。return=数组类型*elements。
5.9 逗号操作符
笔记:前自增(自减)、后自增(自减)的使用。先自增,后运算和先运算,后自增。
5.10 复合表达式求值
笔记:(1)++优先级高于*操作符。
(2)!=优先级高于=。
(3)如果不确定操作符的顺序,那么建议使用括号进行强制。
(4)如果需要在同一条语句修改变量并再次使用,最好分割为两条独立语句:
在一个语句改变其值,下一语句使用。
例如:val++&&val应该写成:(val)&&(val+1)
5.11 动态创建与删除
笔记:(1)关联习题5.18 string *ptr=new string;
(2)定义指针,变量,创建数组,动态创建对象等等,
给它们初始化应该是个好主意。
(3)初始化方式: int *pi = new int;和 int *pi = new int()是不一样的,
前者没有进行初始化,后者初始化为0。
(4)delete 指针后,该指针变成悬垂指针,它指向曾经存放对象的内存,但该对象已经不存在。
若导致错误则很难检查出,因此应在删除指针后将该指针置为0 ;
(5)删除动态分配内存的指针失败容易造成内存泄漏。对同一内存进行两次delete操作会破坏这块内存。
(6)const 对象的值不可修改的,但可以删除该对象。
5.12 类型转换
笔记:(1)赋值操作中,左操作数类型占主导地位。若两边类型不一致,右操作数会被转换为左操作数类型。
(2)用作条件的表达式->bool类型:?: 、!、&&、||、if、while、for、do while。
(3)转换要确保精度,若一数类型为long double,则不管另一数为何种类型,都会被转换为long double。
(4)强制类型转换非常危险,尽量避免使用。