面试很简短,自我介绍、问玩过什么游戏,有没有冲过钱,有什么体会。
C++很基础的问题:
1、指针和引用的区别
指针变量存储的是一个地址,指向一个存储单元,引用只是个别名,不额外占用内存。
指针可以有多级 int **p,而引用不可以。
指针可以为NULL,但是引用不可以,在定义时必须初始化
指针可以变,指向别的存储单元,引用初始化后不可变,自始至终依附于同一个变量
"sizeof引用"得到的是所指向的变量(对象)的大小,而"sizeof指针"得到的是指针本身的大小
指针(++)指向下一个内存,里面存的是什么与当前的无关,引用++相当于原变量的值++:
int a;
int &b=a;
int* p=&a;
b++; //=a++
(*p)++; //=a++
2、const的用法
基本概念:避免对不该改动的变量造成变动。
修饰基本的数据类型:一般常量、数组、指针或引用;
函数:参数const通常用于参数为指针或引用的情况、返回值
类:类的const成员变量只能在构造函数的初始化表中进行
class A
{
const int SIZE = 100; // 错误,企图在类声明中初始化const数据成员
int array[SIZE]; // 错误,未知的SIZE
};
这样是对的
class A
{…
A(int size); // 构造函数
const int SIZE ;
};
A::A(int size) : SIZE(size) // 构造函数的初始化表
{
…
}
错误:
A::A(int size)
{
SIZE=size; //error 赋值的方式是不行的
}
3、return、break和continue的区别
break跳出循环,例如for,while,do-while都可以跳出,但不跳出函数。继续执行后面的语句
return跳出整个函数体,其实主要目的就是用于想中断函数执行,返回调用函数处。
continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环:
for ( int i = 0; i < 10; i++ )
{
if ( i < 5 ) continue;
printf();
}
那么前5次循环都不会输出东西,直接进入下一次循环,后5次循环才会输出。