定义一定是声明,声明不一定是定义:
比如int a;
这是一个定义,同时也是一个声明,声明a是一个整型变量,同时为a分配内存单元。
声明和定义的本质区别在于是否为变量分配了内存空间,就像上面的例子
定义了一个变量a,因为为a分配了内存空间;
同时也是对a的声明,声明a是一个int变量;
举个是声明不是定义的例子:
extern int a;
这就是一个声明,而不是定义,声明a在文件的其他地方,语句不会给a分配内存空间;
但如果
extern int a=1;
这就是一个定义,不仅仅是一个声明,因为为a分配了内存空间,并且进行了复制初始化。