关闭

什么是定义,什么是声明。

591人阅读 评论(0) 收藏 举报
分类:

定义和声明有什么区别:

  举一个例子:

A),int a;B),extern int a;

那个是定义,那个是声明呢?或者都是定义,又或者都是声明。

这个问题,在我工作中和学习中,从来没有被教过和问过。

在计算机中,到底什么是定义,什么是声明,定义和声明的区别归根到底在哪?


先来说一下什么是定义:

所谓定义就是创建一个对象,为这个对象分配一块内存,同时给这块内存取一个名字,这个名字就是我们常说的对象名或变量名。但是注意,这个名字一旦和这块内存关联起来,他们就是一个整体,生死相依,不离不弃。并且这块内存的位置也不能被改变。一个对象或者变量,在一个区域内(全局,文件,函数,循环等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。

再来说一下声明:

第一层含义:告诉这个编译器,这个名字已经匹配到一块内存上路了,后面的代码用变量火女对象实在别的地方定义的。定义是原件,原件唯一有效,那么声明就像复印件,可以重复打印,可以多次声明。

第二层含义:告诉编译器,这个变量或者对象的名字已经被占用了,别的地方,不能在使用这个名字作为其他的变量或者对象名;比如在电影票,你买了一张票后提示他人该位置已经被其他上占用了。

这种声明最典型的例子就是函数参数的声明,例如:

int func(int a, char b);

        这一样一疏理后,应该能够区分出:A是定义,B是声明。

  那么到底什么是定义和声明的根本区别:是内存。

定义创建对象,并为这个对象分配了内存;而声明只是将与内存关联的对象名进行外域可见性的扩充,看不到,可以继续声明。

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22033次
    • 积分:1062
    • 等级:
    • 排名:千里之外
    • 原创:88篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条