1.什么是变量?
(1)其值在其作用域内可以改变的量成为变量。
(2)一个变量应该有一个名字,在内存中占据一定的存储空间。
(3)变量在使用前必须要定义,每个变量都有自己的地址。
2.变量名和变量值区别是什么?
变量名是在变量的声明的时候,该名字就和内存中一块地址绑定在一起了。可以通过变量名直接找到对应的内存区域,也可以通过地址找到其内存区域。
变量的值是变量所对应的内存区域内存放的二进制序列。变量的值不会因为变量的类型发生了改变而改变,当变量被转换为对应类型时,内存区域的二进制序列以该类型的形式翻译出来。这也是强制类型转换能够成立的原因。
3.局部变量和全局变量的区别是什么?
局部变量也称为内部变量,局部变量是在函数内作定义说明的,其作用域仅限于函数内,离开该函数后使用这种变量是非法的。
全局变量也称外部变量,它是在函数外部定义的变量,他不属于那一个函数,它属于一个源程序文件,其作用域是整个源程序。
4.void两种意思?
void可以表示没有数据(没有结果、没有形式参数),也可以表示某种任意类型的数据(如又与指针结合,用void*标记)。void表示空类型,void* 表示任意数据的指针类型,程序如要使用void*类型数据,应该将它强制地转换成某种具体的指针类型。
5.什么是声明?什么是定义?他们之间的区别是什么?
声明是引入标识符和标识符的类型(类型可以是整形,函数,浮点型等)。声明也可理解为是让编译器知道有这么个标识符,方便以后引用。
定义实际是实例代(或实现)标识符。可为标识符分配存储空间,还可为标识符指定初始值。
定义可以代替声明,因为在定义的时候我们也指定了标识符和类型。但所有标识符只能有一次定义,而声明可以有多次。
6.static和extern的区别?
全局变量是不显示用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。
7.const的作用?
(1)可以定义const常量,具有不可变性。
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
(5) 为函数重载提供了一个参考。
(6) 可以节省空间,避免不必要的内存分配。
(7) 提高了效率。
8.如何使用auto?
这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。
9.typedef
(1)常规变量类型定义
(2)指针类型定义
(3)数组类型定义
(4)函数地址说明
(5)函数声明
(6)函数指针
10.枚举与#define的区别?
(1)#define 宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。
(2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量。
(3) 枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个。