1.分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句
BOOL型变量:if(!var)
int型变量: if(var==0)
float型变量:
const float EPSINON = 0.00001
if ((x >= - EPSINON) && (x <= EPSINON)
指针变量: if(var==NULL)
2.简述数组与指针的区别?
数组是一连续的记忆体区块,必须要先决定配置容量和存放的资料型态。
当数组作为函数的参数进行传递时,数组就自动退化为通指针类型
指针是指针变量的简称,这个变量存放的地址值,是可以改变的;
const 含义:限定一个变量不允许被改变,产生静态作用
const作用:定义常量、修饰函数参数、修饰函数返回值三个作用。
被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
1)修饰普通变量 const无论是放在数据类型的前面还是后面,都是将变量饰为常量
2)和指针变量结合使用,从constk开始往右看,先遇到*p则*p不可以被改变,先遇到p,p不能被改变。
3.const与#define相比,有何优点
①define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。
②const常量可以进行调试的,define是不能进行调试的,因为在预编译阶段就已经替换掉了
/#define 预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。
4.什么是预编译:
预编译又称为预处理 , 是做些代码文本的替换工作。
处理以# 开头的指令 , 比如拷贝 #include 包含的文件代码,#define 宏定义的替换 , 条件编译等,就是为编译做的预备工作的阶段。
主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
C 编译系统在对程序进行通常的编译之前,首先进行预处理。
c 提供的预处理功能主要有以下三种:
1 )宏定义
2 )文件包含
3 )条件编译
何时需要预编译:
总是使用不经常改动的大型代码体。
程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个“预编译头