1.局部变量和全局变量的区别
局部变量是在函数内作定义说明的,其作用域仅限在函数内,在复合语句中也可定义变量,其作用域只在复合语句范围内。
全局变量实在函数外部定义的变量,不属于哪一个函数,属于一个源程序文件,其作用域是整个源程序。
2.用static修饰局部变量和全局变量,分别有什么后果?
用static修饰局部变量时,其生命周期以及存储空间发生变化,但其作用域并没有变化,作用域仍仅限于该语句块;
但用static修饰全局变量时,改变了其作用域的范围,由原来整个工程可见变成本源文件可见。
3.const
const关键字的作用主要有以下几点:
可以定义const常量,具有不可变性。
便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
为函数重载提供了一个参考。
4.const int *p和int *const p的区别
const int *p是指指针p指向的空间里的值不变;
int *const p是指指针变量p里的值不变,也就是说p不能再指向其他地址,但是p所指向的空间里的值可变。
5.为什么CPU不直接读取内存里的数据,而是要借助寄存器?
在计算机中,CPU的运算速度最快,而相对应的存储器速度却慢得多,访问速度最快的寄存器,由于其体积大,不适合大容量
的使用,所以只能二者结合的方式来提高效率。
6.使用寄存器时,应该注意什么?
待声明为寄存器变量类型应该CPU寄存器所能接受的类型,意味着寄存器变量是单个变量,变量长度应个该小于等于寄存器长度
不能对寄存器变量使用取地址符,因为该变量没有内存地址
尽量在大量频繁操作时使用寄存器变量,且声明的变量个数应该尽量少
7. 联合体和结构体的区别
在结构中各成员有各自的内存空间,一个结构变量的总长度是各成员长度之和
在联合中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度(同样遵循对齐)
8. 枚举和#define宏的区别
#define 宏常量实在预编译阶段进行简单替换,枚举常量则是在编译的时候确定其值
一般在编译器里,可以调试枚举常量,但是不能调试宏常量
枚举可以一次定义大量相关的常量,而#define 宏一次只能定义一个
9. 基本内置类型有哪些?
基本内置类型:①整型②实型③构造类型④指针类型⑤枚举类型⑥void类型
10.定义和声明的区别
定义就是创建一个对象,为这个对象分配一块内存并给它取上一个名字。一个变量或对象在一定的区域内只能
被定义一次。
声明是告诉编译器,这个名字已经匹配到一跨爱内存上了,声明可以多次出现