函数和变量(全局变量)都有声明和定义,
对于函数而言:
同一文件内,如果函数fun_1调用fun_2时,如果fun_2在fun_1之后定义,则需在fun_1之前对fun_2进行声明,如下:
void fun_2();// 声明
void fun_1() {
...
fun_2();
...
} // 调用fun_2
void fun_2() { ... } // 定义
不同文件内,调用外部函数时,需要先#include对应头文件(头文件包含函数的声明,可直接导入源文件,但不建议),接着调用该函数。
对变量而言:
不管在同一个文件还是不同的文件内,在定义之前使用必须提前声明,并且在声明时要使用关键词extern:
// 同一文件内的情况:
extern int b;
main()
{
printf("b = %d\n", b);
}
int b = 3;
此外,其声明用于说明变量的属性(主要是变量的类型),且可多次声明;而变量的定义除此以外还将引起存储器的分配,且只能定义一次。
注意:定义是一种特殊的声明。
int sp;
double val[MAXVAL];
// 这两条语句定义变量sp和val,并为之分配存储单元,同时这两条语句还可以作为该源文件其余部分的声明。
extern int sp;
extern double val[];
// 这两条语句只是做了声明,并没有分配存储空间
注意:在定义中必须指定数组的长度,但extern声明则不一定要指定数组长度。
变量初始化:在变量的定义同时进行赋值,定义之后再赋值不叫初始化。