变量的声明和定义的区别是:声明是向程序介绍一个名字,它指的是改名字是什么意思,在内存上并没有分配存储空间;而定义是指为这个名字分配存储空间。如在源文件example.c中的几个例子:
extern int i;//declaration without definition
extern int fun(void);//function declaration
float b;//declaration and definition
int fun(void)//definition
{
return 1;
}
int i;//definition
int add(int x)//declaration and definition
{
return x + 1;
}
void main()
{
b = 1.0f;
i = 2;
fun();
add(5);
}
extern int i; 指的是声明这个变量,在某个函数用到这个变量的时候,它会查找在该程序段中有没有
定义这个变量,如果没有,查找本模块的其他地方,之后查找整个全局空间。直到找到改变量的
定义,如果没有,程序出现编译错误。同样,如果在某个头文件定义了一个变量,例如:在example.h
头文件中定义了int x;如果有两个实现文件example1.c和example2.c都包含了该头文件,此时就会出现变量
重复定义错误。