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