前言
先给大家提一个问题:
什么是定义?什么是声明?它们有什么区别?举个例子:
A)int i;
B)extern int i;
哪个是定义?哪个是声明?都是定义或者都是声明?
一、定义
所谓定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取一个名字,这个名字就是我们经常所说的变量名或对象名。但注意,这个名字一旦和这块内存匹配起来,它们就将“不离不弃”(可以假设这个名字嫁给了这块内存,没有要彩礼啊),并且这块内存的位置也不能被该改变。一个变量或对象在一定的区域内(如函数、全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。
二、声明
什么是声明?有两重含义,如下所述。
第一重含义:告诉编译器,这个名字已经匹配到一块内存上了,上面第2行代码用到变量或对象上是在别的地方定义的。声明可以出现多次。
第二重含义:告诉编译器,这个名字已经被预定了,别的地方再也不能用它来作为变量名或者对象名。例如,你在图书馆自习室的某个座位上放了一本书,表明这个座位已经有人预定了,别人不能再使用这个座位(听起来有点霸道!!)。其实这个时候你本人并没有坐到这个座位上。这种声明最典型的例子就是函数参数的声明,如“void fun(int i, char c);”。
总结
这么一解释,我们可以很清楚地判断开头处代码的第1行是定义,第2行是声明,它们的区别也很清晰明了了。
本文详细解析了C++中的定义与声明的区别。定义是指为变量或对象分配内存并绑定名称,只能在特定区域定义一次;声明则告知编译器名称已与内存关联,可以多次声明。例如,`int i;`是定义,`extern int i;`是声明。理解这两者差异对于编程至关重要。
4625

被折叠的 条评论
为什么被折叠?



