1.什么是预编译,预编译的用处是什么?
预编译是在编译前进行的(源文件=>预编译=>编译=>链接),它的作用是把宏和预编译头(#开头称为预编译头)进行展开替换。
2.static 关键字的作用
- static 为全局变量和函数限制在本文件内使用
- static局部变量:生命周期为全局(结束于程序停止运行),但是作用域为局部(只能局部调用),并且只会初始化一次(例如:在函数调用结束后,它不释放仍然保留原值)
3.sizeof 是什么,作用在哪个阶段?
它是关键字,作用在预编译阶段(关键字的作用域都是在预编译阶段),用于计算对应数据类型占用的内存大小。
4.头文件中的ifndef/define/endif 的作用
防止重复引用文件。
5.全局变量和局部变量有什么区别?
全局变量储存在静态数据区(全局区),局部变量在栈中。
6.局部变量能否和全局变量重名?
能重名,局部会屏蔽全局。同一作用域想要引用同名全局变量?C语言不可以。
7.写出每种数据类型与零值的比较
- 不可将布尔变量直接与true、false或者1、0比较
- 整型可以用"=="或"!="直接与0比较
- 不可将浮点变量用"=="或"!="与任何书比较
- 指针变量用"=="或"!="与NULL比较
8.现在需要给银行设计一套存储系统,需要精确到小数点后4位,请问使用什么数据类型,为什么?
int类型,因为浮点数存在精确度问题。
9.汉字的常用编码方式是什么?采用几字节存储,为什么?
GBK,2字节;因为汉字超过了1个字节表示的范围,采用2字节存储且最高位为1表示汉字存储方式。
10.如何让局部变量具有全局生命期?
将其变为静态变量
11.#include<>与#include""的区别
前者直接从计算机库中找头文件,后者先从项目中找头文件,没找到再去计算机库中
12.队列和栈有什么区别
队列先进先出,栈先进后出