数据类型,常量与变量部分:(发现有些点竟然这么多年第一次发现)
C++基本数据类型有哪些:
答:整型,浮点型,void型。
注:其他各种数据类型均是这三种类型的扩充,另外void类型在实际程序中经常用来表示指针无类型,指向整块内存,程序可以自行根据需要进行解析。
2. 整型的分类及区别:
答:表示整数,字符,布尔值的数据类型统称整形。根据长短修饰词和符号修饰词不同可分为13类。长短修饰符:short 半个机器字长,int 一个机器字长,long 两个机器字长。符号修饰符: signed 带符号的,unsigned 无符号的,区别在表示范围上。char, unsigned char, signed char, int, unsigned int, signed int, short int, unsigned short int, signed short int, long int, unsigned long int, signed long int, bool.
注:具体记每种数据类型占几个字节意义不大,因为这是由平台决定的,记机器字长是个明智选择。
3. 简单介绍一下C++中的常量:
答:constant常量是用来标示,测量和比较的在程序运行前确定,运行过程中不会改变的值。可分为:
整形常量:注意整形常量可以指定进制,常量前如有0x,则为十六进制,如有0则为八进制。同时可以有后缀符号,不区分大小写,L代表长整形,U代表无符号。
浮点型常量:注意浮点型只有十进制,默认为double,绝对值小于1时小数点前的0可以省略,float表示范围在+-e38,double在+-e308,后缀同样不区分大小写,F代表有符号,L代表长双精度。
字符型常量:可用ASCII表示一个字符,也可用单引号加反斜杠表示转义字符,如'x2f'表示十六进制的2f。
字符串常量:用双引号括起来的字符。
转义字符常量:
换行
回车 空格
地址常量
注:比如QREP的版本信息,不同版本的版本号就是写死的。
4. 常量与变量的区别:
答:常量在定义时必须初始化,且值不可改变,常量不可寻址,它的地址不允许赋给非常量指针,变量可以寻址。常量编译执行效率较高。
5. 操作符有哪些:
答: 操作符又称运算符,按操作数分为一元运算符,二元运算符和三元操作符。 按功能不同,分为算术操作符,关系操作符,逻辑操作符,位操作符,赋值操作符,自增减操作符,箭头操作符,条件操作符,sizeof操作符,逗号操作符。
注:逗号表达式的值为最后一个表达式的值和类型。但在求值时,按从左到右的顺序分别计算个表达式的值。
6. 操作符的优先级:
答: 共16个等级,总体而言,单目高于多目,算术高于逻辑。三个从右至左结合的,单目运算符,条件运算符和赋值运算符。
7. 指针的自增减操作有何不同:
答: 指针的自增减,指的是指向的地址的增减。比如char *p=&str[0]; ++p 是将指针指向str[1], ++*p是将str[0]中的数据加1,比如说原来为c,加完变成d。
8. 变量有哪几种初始化方式?
答: 两种,赋值初始化和直接初始化。直接初始化效率更高。
9. 声明和定义的区别?
答: 声明主要表明名称和类型,定义具体分配了空间。函数的声明和实现比较常见,变量的声明多见于重复定义或者全局变量。
10. C++中的作用域?
答: 作用域分为全局作用域,局部作用域和语句作用域。作用域是可以嵌套的,
11. 变量的存储类型有哪些?
答: 变量的存储类型决定了其生命周期,存储类型的说明符有4个, auto,register,static和extern。
auto和register称为自动存储类型,auto是默认的,生命周期始于块的执行,结束于块的结束。在栈中,执行结束自动释放,生命期和作用域一致。寄存器变量不建议使用,因为编译器大多会进行优化。
static静态存储类型,存储于全局数据区,如未显示初始化,系统会自动赋值0,且初始化只进行一次,具有全局生命周期,根据定义位置不同,分为局部静态变量和全局静态变量,也称内部静态变量和外部静态变量。
extern外部存储变量,程序中的全局变量和函数默认是外部的,其他程序可以通过extern声明来使用它们。
12. 程序的存储区域有哪些,各自特点如何?
答: 程序的存储区域包括代码区,静态数据区,栈区和堆区,相应的生命周期分为静态生命期,局部生命期和动态生命期。
静态数据区的数据具有静态生命期,全局变量,静态全局变量和静态局部变量都存在于静态数据区。系统会自动为其初始化,函数驻留在代码区,同样具有静态生命期。
栈区的数据具有局部生命期,如果未初始化,数值是随机的,有一点要注意,静态局部变量,具有局部作用域,但具有静态生命周期。
堆具有动态生命期,主要通过new和delete来处理内存,同时也说法认为单提出来有一个自由存储区,由malloc和free操作。
注:这部分涉及内存,贴个地址:http://wenku.baidu.com/view/1ecb5321482fb4daa58d4b91.html
13. 什么是引用?
答: 引用是对象的另一个名字,通过&符号来定义,如int i=0; int &ref=i;