C/C++面试之基础知识总结篇

基本数据类型

1.  C++中有几种基本数据类型

答:C++中有3种基础数据类型:整数型、浮点型、void型。

 

2.  整形有哪几种形式以及之间的区别

答:表示整数、字符和布尔值的算术类型合称为整型,整形根据修饰符细分为13种形式((0+unsigned+signed)* (char+short+int+long)+bool),主要的区分体现在类型名、长度和表示的范围。

注意:

(1) char类型一般是8bit,但ANSI C里没有硬性规定其长度,某些嵌入式编译器可能是16bit

(2) short和long类型的长度不相同

(3) int类型通常同具体机器的物理字长相同

(4) short通常是16bits, int通常是16bits or 32bits每种编译器可以根据硬件的不同自由确定,   但是short和int必须最少是16bits, 而long类型必须最少是32bits, 并且short必须比int和long类型要短。

 

3.  C++中有哪些常量?

答:常量是不可以改变的数据,常量按照类型分为整数常量、浮点型常量、字符型常量、字符串常量、转义字符常量、地址常量等6种。

 

4.  常量和变量的区别:

答:常量值不可以修改,变量值可以改变;常量定义时必须初始化,变量没有必要;常量不可寻址,它的地址不允许复制给非常量指针,变量可寻址;常量有相对较高的编译执行效率。

 

操作符

5.  操作符有哪些分类:

答:表达式由操作符、操作数字和标点符号组成,以用于说明一个运算过程,操作符说明了表达式的主要目的并计算返回结果。

按照功能区分,操作符有算术操作符、关系操作符、逻辑操作符、位操作符、赋值操作符、自增和自减操作符、箭头操作符、条件操作符、sizeof操作符、逗号操作符等10类。

按照操作数区分,操作符分为一元操作符、二元操作符、三元操作符3类。

 

6.  操作符优先级对运算结果的影响:

答:优先级决定了表达式的运算顺序,不同优先级的运算符的不同作用会影响表达式的运算结果。

 

7.  逻辑操作与其他操作的关系:

答:逻辑操作只返回true或false这两个值,他们可以用来做判断条件,裸机操作符不会改变被操作数的值。

逻辑或与总是先计算左值,左值不能确定结果后求解右值。逻辑非产生于操作数相反的条件值。

 

8.  自增自减前操作与后操作的区别:

答:自增自减前操作的额优先级大于赋值运算符(=),而后操作的优先级小于赋值运算符不会对表达式的结果产生影响。

 

9.  指针自增自减有什么不同:

答:变量的自增自减是修改变量的值,指针的自增自减是修改指针指向的地址。

 

变量

1.  什么是左值和右值:

答:变量是左值,可以出现在赋值语句的左边;数字字面值是右值,不能被赋值。

 

2.  什么是变量:

答:变量是指在程序的运行过程中随时可以改变的量,变量是在内存中可修改的存在值的命名空间。

 

3.  变量初始化形式:

答:变量初始化指创建变量并同时给它赋初始值,C++初始化变量有两种形式:复制初始化(=n)和直接初始化((n)),直接初始化的语法更加灵活且执行效率更高。

 

4.  变量初始化的规则:

答:系统有时候会自动初始化未初始化的变量。使用未初始化的变量是常见的程序错误,也是难以发现的错误,有时候会导致编程人员不容易判断出问题的原因。建议为每个内置类型对象进行初始化操作,虽然有时不是必须的,但这有助于使程序更加容易理解和安全。

 

5.  什么是变量的声明和定义:

答:C++程序通常由许多文件组成,为了让多个文件可共享同一个变量,C++区分了声明和定义,定义和声明有时候同时发生,但声明的主要目的是表明变量的类型和名称,而定义的目的是为变量分配存储空间。

 

6.  C++常见的作用域:

答:作用域是程序的一段区域,作用域用于区别变量所在的有效范围,可分为:全局作用域、局部作用域和语句作用域,一个变量名可以和不同作用域中的不同试题相关联。

 

7.  局部变量和嵌套的作用域

答:局部变量是具有局部作用域的变量,在C++中作用域是可以嵌套的。

 

8.  变量的存储类型:

答:在C++中,变量的存储类型分为自动类型、寄存器类型、静态类型、外部类型4种。

 

引用、C与C++的区别及其他

1.  引用的含义:

答:引用是对象的另一个名字,在实际程序中,引用主要用作函数的形式参数(形参)。

 

2.  如何使用const引用和非const引用:

答:const引用可读取不可修改引用对象,不可对const引用赋值,适用于指向const对象的的引用;非const引用不适用于const对象的引用,可修改引用和被引用对象的值。

 

3.  C与C++有什么区别

答:C语言是结构化的,面向过程的语言,考虑的是实现的过程;C++面向对象考虑的是整个程序模型。

 

4.  什么是匈牙利命名法:

答:匈牙利命名法是一种编程时的命名规范,在变量和函数名中假如前缀以便于人们对于程序的理解,变量名=属性+类型+对象描述名。

 

5.  变量的命名规则:

答:变量名命名习惯最重要的是保持风格的一致性,变量名必须由字母、数字和下划线组成且以字母和下划线开头,并避免与保留关键字和标准库冲突。

来自:http://www.tebik.com/?p=142

posted on 2012-09-14 15:26  挺胸收腹  阅读(1217)  评论(0编辑  收藏  举报

导航