C++基础知识面试必备、复习细节 (1)
c++变量与基本类型
(解决面试时常问的考点以及易忘点易混点)
一些经验准则:
- 如果明确数值不为负,则选择无符号类型
- 使用int执行整数运算(如果超出int数值范围则采用 long long)
- 执行浮点数运算采用double(注意double类型不可以用==判断相等,可以用相差值小于一个很小的值判断)
- 类型转换时要注意范围,浮点转换到整型会损失小数部分
- 切勿混用带符号和无符号类型。(当无符号和有符号相加时,带符号数会转变为无符号数,会引发错误)
- 定义变量时尽量初始化,尤其在函数体内,因为在函数体内的内置类型的变量如果没有初始化其值是未定义
引用和指针
- 引用是对象的一个别名,指针本身就是一个对象
- 引用必须在定义时进行初始化,而指针无需(但为了避免未知错误,通常定义指针时赋初值)
- 指针的值在初始化后可以改变,即指向其它的存储单元,而引用在进行初始化后就不会再改变了
- ”sizeof引用”得到的是所指向的变量(对象)的大小,而”sizeof指针”得到的是指针本身的大小;
- 将引用作为函数的参数时,实际上就是直接将该变量传入了函数,而不是再次拷贝了一个临时变量,所以对该参数的修改将直接修改的原始的值。
const限定符
-
为了避免对值的修改,可以采用const限定符。注意:const对象必须初始化
const int a; //错,必须初始化 const int b=10; //对,编译时初始化
-
const引用:对常量的引用,对常量的引用不能被用作修改它绑定的对象
const int ci=1024; const int &ri=ci; //正确,引用以及其对应的对象都是常量 int &r2=ci; //错误,试图让一个非常量引用指向一个常量对象
-
const指针
-
指向常量的指针: const int * 表示的是一个指向const int的指针
const int a=3; const int *p=&a; //正确,a是一个int常量,p是指向int常量的指针
-
常量指针: int *const 表示的是指向int的指针,但其不能被修改,不变的是指针本身而不是那个值
故 const int * const就是一个指向const int的常量指针
int a=0; int *const p=&a; //p是一直指向a的指针 const int b=0; const int *const p2=&b; //p2是指向常量对象的常量指针
-
处理类型
-
采用关键字 typedef 创建易懂的变量别名
typedef double wages; //wages将是double的同义词 wages a; //a是double类型
-
auto类型,可以让编译器自动分析表达式类型
auto item=val1+val2; //如果val1和val2是int,则item将是int vector