声明和定义区别
声明变量
不需要 建立存储空间,如:extern int a;
定义变量
需要 建立存储空间,如:int b;
#include <stdio.h>
int main()
{
//extern 关键字只做声明,不能做任何定义
//声明一个变量a,a在这里没有建立存储空间
extern int a;
a = 10; // 报错!err, 因为没有分配建立空间,所以就不可以赋值
int b = 10; //定义一个变量b,b的类型为int,b赋值为10
return 0;
}
从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义:
-
int b 它既是声明,同时又是定义
-
对于 extern b 来讲它只是声明不是定义
一般的情况下,把建立存储空间的声明称之为“定义”,而把不需要建立存储空间的声明称之为“声明”。
参考:
[1]C基础讲义2018修订版(黑马程序员)