[问题]不懂就问:如何区分全局变量的声明和定义?

C、C++和Java语言
回复
头像
dickfisch
帖子: 110
注册时间: 2007-10-22 17:40
送出感谢: 0
接收感谢: 0
联系:

[问题]不懂就问:如何区分全局变量的声明和定义?

#1

帖子 dickfisch » 2008-07-25 17:40

比如 我在源文件a里面定义一个全局变量int n, 然后在另一个文件b里面也这样写int n。那么编译的时候是认为a里面的是定义,b里面是声明呢?还是认为b里面是定义,a里面是声明呢?

如果对其中一个赋值,比如在a中写int n = 1, 那么b中的int n就认为是声明了一个外部变量,是吗?

或者在b中写extern int n, 那就代表是在声明变量,是吧?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#2

帖子 BigSnake.NET » 2008-07-25 18:00

赋值的是定义, extern的是声明
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
dickfisch
帖子: 110
注册时间: 2007-10-22 17:40
送出感谢: 0
接收感谢: 0
联系:

#3

帖子 dickfisch » 2008-07-25 18:42

嗯,我个人觉得是不是按照编译顺序来?比如先编译到a,那么a里面的int n就看成是定义,赋值为0。接着编译到b,b里面的int n就看成是外部变量的声明。
头像
异域追梦者
帖子: 424
注册时间: 2008-02-18 0:25
送出感谢: 0
接收感谢: 0
联系:

#4

帖子 异域追梦者 » 2008-07-25 22:36

只能有一个定义, 否则算是重复定义.
图片
回复

回到 “C/C++/Java”