1.sizeof的用法
逗号运算符
口诀:从左到右算,返回最右边的值
类型转换
如何实现的隐式类型转换?
先算右边的,右边的3(int)先提升为double ,然后算得(7.541(double))然后再截断为int
一般我们把到int成为提升,把到更上层的称为转换
const char* 指向一个string
常量指针和指针常量
int a=5;
常量指针:
const int *p=&a;
能够改变指向的方向,但是不能改变指向的内容的值
int a=5;
指针常量
int * const p=&a;
能够解引用改变指向的内容,但是不能够指向新的内容了。
强制类型转换
1.static_cast<double>(表达式)
2.任何指针都能转化为void*
void *p=&d;
3.double * dp=static_cast<double*>(p)
这个可以把const_cast<int *>(cp) 转化为int * 消除底层const ,但是有了改变它的风险了
const_cast 会去掉const的性质,如果准备去掉const的指针指向的是int 那没事,如果指向的是const int 那么就会不能解引用
reinterpret_cast 重新底层解释,
int *ip;
char * pc=reinterpret_cast<char*>(ip);
类似于C的强制类型转换
就的强制转化不好,因为它有不确定性,可能效果会和static_cast一样,也可能效果和const_cast效果一样,也可能于reinterpret_cast效果一样
用的最多的还是static_cast 和dynamic_cast