导读:在C++程序员面试的时候,一般都需要笔试和面试,笔试往往是考核基础的知识,面试往往是考核基础加项目经验等。而笔试时候,经常发现,明明很简单的问题,却答不出来,或者即使答出来,也不全面。现将C++软件工程师岗位面试知识进行汇总和解答。
本篇是C++基础篇,主要内容如下:
(1)指针定义;
(2)空指针和悬垂指针的区别;
(3)指针(*)、引用(&)、解引用(*)、取地址(&)、的概念和区别
(4)static关键字
(5)const关键字
(6)enum和#define区别
(7)#progma
(8)预处理
(9)sizeof
(10)const与宏定义的区别
1 C++基础
1.1 指针定义
(1)、指针变量
a) int a; //一个整型数
b) int *a; //一个指向整型数的指针
c) int **a; //一个指向指针的的指针,它指向的指针是指向一个整型数
d) int a[10]; //一个有10个整型数的数组
e) int *a[10]; //一个有10个指针的数组,该指针是指向一个整型数的
f) int (*a)[10]; //一个指向有10个整型数数组的指针
g) int (*a)(int); //一个指向函数的指针,该函数有一个整型参数并返回一个整型数
h) int (*a[10])(int); // 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
(2)、函数指针
是一个指向函数的指针。看例子:
A),char * (*fun1)(char * p1,char * p2);//fun1 不是函数名,而是一个指针变量,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针。
B),char * *fun2(char * p1,char * p2);//是个二级指针
C),char * fun3(char * p1,char * p2);//函数的返回值为char *类型
1.2 空指针和悬垂指针的区别
空指针是指被赋值为NULL的指针;delete指向动态分配对象的指针将会产生悬垂指针。
空指针可以被多次delete,而悬垂指针再次删除时程序会变得非常不稳定;
使用空指针和悬垂指针都是非法的,而且有可能造成程序崩溃,如果指针是空指针,尽管同样是崩溃,但和悬垂指针相比是一种可预料的崩溃。