定义:
什么是定义?所谓的定义就是(编译器)创造一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们常常说的定义名或对象名。
但注意,这个名字一旦和这块内存匹配起来(可以想象是这个名字嫁给了这块空间,没有要彩礼啊),它们就生死与共,终生不离不弃,并且这块内
存的位置也不能被改变。一个变量或对象在一定区域内(如函数,全局)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。
声明:
什么是声明?有两重含义,如下所述。
第一重定义:
告诉编译器,这个名字已经匹配到一块内存上了,声明可以出现多次。
第二重定义:
告诉编译器,这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。例如:你在图书馆放了本书占座,表示这个位置已经有人了,别人
在也不允许使用这个作为。其实你本人并没有坐在这个座位上。这种声明最典型的例子就是函数参数的声明,如:“void fun(int I, char c);"。
所以如果有代码如下:
A)int I;
B) extern int I;
A是定义,B是声明。