1、预处理程序:define
定义函数
宏定义还可带变元(参数):
#define 标识符(标识符, 标识符,…) 单词串
如:
#define
于是语句x = max(p+q, r+s); 可替换为:
x = ((p+q) > (r+s) ? (p+q) : (r+s));
注意:
- 宏定义名与参数间不能有空格,如max(A,B);
- 参数应用括号括起来,如(A)>(B)?(A) : (B)
反例:
#define
则:
a=prod(b+c,d+e);
被替换为:
a=b+c*d+e;
2、外部变量
在函数外面定义的变量叫做外部变量;
外部变量作用域(scope)为整个程序,即可在程序的所有函数中使用;
外部变量有隐含初值0;
生存期(life cycle):外部变量(存储空间)在程序执行过程中始终存在;
C程序可以分别放在几个文件上,每个文件可作为一个编译单位分别编译。外部变量只需在某个文件上定义一次,其它文件若要引用此变量时,应用extern加以说明。(外部变量定义时不必加extern关键字);
在同一文件中,若前面的函数要引用后面定义的外部(在函数之外)变量时,也应在函数里加以extern说明;
例如,如果外部变量N不在程序头部定义,则需要用extern加以说明。
…
extern int n; //外部变量说明
int main()
{
…
}
int n = 0; //外部变量定义
void insertData(int array[], int data)
{
…
}
使用外部变量的原因(优点):
- 解决函数单独编译的协调;
- 与变量初始化有关;
- 外部变量的值是永久的;
- 解决数据共享;
外部变量的副作用(缺点):
使用外部变量的函数独立性差,通常不能使用在其他的程序中。而且,如果多个函数都使用到某个外部变量,一旦出现差错,就很难发现问题是由哪个函数引起的。在程序中的某个部分引起外部变量的错误,很容易误以为是由另一部分引起的。
3、通过调用自身解决问题的过程称为递归;