判断如下两段代码A和B哪一个是定义,哪一个是声明:
(A) int i;
(B) extern int i;
所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。变量名与内存空间绑定在一起,双方都无法被改变。并且在一个命名域内只能被定义一次。
声明有两层含义:1、通知编译器该变量在别处已经定义,可直接使用,可声明多次; 2、提前占变量名称,如下面例子所示,该函数名 fun() 无法再被其他函数所用。
void fun();
定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存。