陈正冲老师讲c语言之声明和定义的区别

简介:

什么是定义?什么是声明?它们有何区别?

举个例子:

1
2
A) int  i;
B)extern  int  i;(关于extern,后面解释)


哪个是定义?哪个是声明?或者都是定义或者都是声明?我所教过的学生几乎没有一人能回答上这个问题。这个十分重要的概念在大学里从来没有被提起过!

什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。但注意,这个名字一旦和这块内存匹配起来(可以想象是这个名字嫁给了这块空间,没有要彩礼啊。^_^),它们就同生共死,终生不离不弃。并且这块内存的位置也不能被改变。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义
同一个变量或对象。


什么是声明:有两重含义,如下:


第一重含义:告诉编译器,这个名字已经匹配到一块内存上了(伊人已嫁,吾将何去何从?何以解忧,唯有稀粥),下面的代码用到变量或对象是在别的地方定义的。声明可以出现多次。

第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名。比如你在图书馆自习室的某个座位上放了一本书,表明这个座位已经有人预订,别人再也不允许使用这个座位。其实这个时候你本人并没有坐在这个座位上。这种声明最典型的例子就是函数参数的声明,例如:

1
void  fun( int  i,  char  c);


好,这样一解释,我们可以很清楚的判断:A)是定义;B)是声明


那他们的区别也很清晰了。记住,定义声明最重要的区别:定义创建了对象并为这个extern 声明变量是在其他文件中声明(也可以看做是引用变量)。

 

对象分配了内存,声明没有分配内存(一个抱伊人,一个喝稀粥。^_^)

 本文转自二郎三郎博客园博客,原文链接:http://www.cnblogs.com/haore147/p/3647466.html,如需转载请自行联系原作者

相关文章
|
1月前
|
C语言
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
爱上C语言:分支与循环(分支篇)多个if与if — else if区别
|
1月前
|
C语言
C语言中的exit与return的区别
C语言中的exit与return的区别
|
2月前
|
Java 编译器 C语言
【JavaSE】运算符详解及与C语言中的区别
【JavaSE】运算符详解及与C语言中的区别
54 0
|
2月前
|
存储 安全 C语言
C语言抽象数据类型栈的定义讲解
C语言抽象数据类型栈的定义讲解
22 0
C4.
|
2月前
|
存储 程序员 数据处理
C语言怎样定义和引用一维数组
C语言怎样定义和引用一维数组
C4.
17 0
C4.
|
2月前
|
存储 C语言
C语言怎样定义和引用二维数组
C语言怎样定义和引用二维数组
C4.
16 0
|
2月前
|
存储 C语言
C语言栈的表示和实现的定义讲解
C语言栈的表示和实现的定义讲解
23 0
|
2月前
|
编译器 C语言
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
C语言宏定义(#define定义常量​、#define定义宏​、 带有副作用的宏参数、 宏替换的规则、 宏函数的对比)
|
18天前
|
存储 安全 编译器
C语言怎样定义指针变量
C语言怎样定义指针变量
7 0
|
18天前
|
存储 C语言
C语言中定义结构体类型变量的深入探索
C语言中定义结构体类型变量的深入探索
10 0