提问:
1.数据变量有哪些?
(1)整型变量 (2)字符型变量 (3)浮点型变量(4)指针型变量
变量的值可以发生改变,可以被覆盖、被写入、被赋值。每个变量必须有一个名字和它所在内存空间绑定。代码中明的变量类型已经决定,但其所代表的空间里的数据是可以修改的。
2.局部变量是什么?
局部变量是内部变量,局部变量是在函数内作定义说明的,其作用域仅限于函数内,离开函数后再使用这种变量是非法的。
(1)主函数中定义的变量只能在主函数中使用,不能在其他函数中使用。同时,主函数中也不能使用其他函数中定义的变量。因为主函数也是一个函数,它与其他函数是平行关系。
(2)形参变量是属于被调用函数的局部变量,实参函数是属于主调函数的局部变量。
(3)允许在不同的函数中使用相同的变量名,代表不同的对象,分配不同的单元,互不干扰,也不发生混淆。
(4)在复合语句中也可定义变量,作用域只在复合语句范围内。
3.全局变量是什么?
也称外部变量,是在函数外部定义的变量,不属于哪一个函数,属于一个源文件,作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern,但在一个函数之前的全局变量,在该函数内使用可不再加以说明。
4.有哪些基本内置类型?
(1)整型
(2)实型
(3)构造类型
(4)指针类型
(5)枚举类型
(6)void类型
5.static是什么?
static修饰变量,指该变量空间独立于函数中的auto变量或者栈变量,static变量空间在内存中的静态区内分配。
(1)修饰局部变量:一般情况下,局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但使用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束为止。但其作用域并没有改变,仍是一个局。部变量,作用域仅限于该语句块。
(2)修饰全局变量:对于一个全局变量,它既可以在本源文件中被访问,也可以在同一个工程的其他源文件中被访问(只需用extern进行声明即可)
(3)修饰函数:情况与修饰全局变量一样,改变了函数的作用域。 Extern指当前变量或函数不是在本源文件内声明的,是外部变量或外部函数,在文件里试图用一个外部声明的全局变量或函数时,可在前加上extern。
6.extern是什么?
extern可修饰变量和函数,表示该变量或者函数在其他地方被定义,在此声明使用它,多个源文件共享变量和函数;多个c源文件的编译是独立的,所以编译无法判断多个源文件共享的变量的类型是否一致;等到链接的时候,多个源文件编译后的.o文件链接成一个目标文件,如果有一个以上源文件对同一个变量进行了初始化,则报错。
extern变量名:在任何函数体外声明或定义变量时,不加extern可能是定义也可能是声明
7.const是什么?
const是constant的简写,const不仅仅可以用来修辞基本类型,它还经常用来修辞一些构造类型和指针及其参合体,如指针,数组,指针数组,结构体数组,结构体指针数组等。
8.不同类型存储器都有什么特点?
静态存储器:造价高,体积大,适合容量小的缓存
动态存储器:造价较低,体积较小,适合大容量保存数据
9.枚举与#define宏有什么区别?
(1)#define宏常量是在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值。
(2)一般在编译器里,可以调试枚举常量,但是不能调试宏常量。
(3)枚举一次可以定义大量相关的常量,而#define一次只能定义一个。
10.sizeof(ColourVal)的值为多少?为什么?
sizeof(ColorVal)是4,因为ColorVal是一个枚举变量,而枚举变量代表一个整数(如ColorVal = RED),而整数是4个字节。