判别下列语句哪些是声明,哪些是定义,请解释原因。 (a) extern int ix = 1024; (b) int iy; (c) extern i

判别下列语句哪些是声明,哪些是定义,请解释原因。

(a) extern int ix = 1024;
(b) int iy;
(c) extern int iz;
(d) extern const int &ri;
貌似A即使有extern,但有给定义的变量ix复制,故选项A为定义,只是选项d看不明白

对变量而言,声明与定义的关系稍微复杂一些。在
声明部分出现的变量有两种情况:一种是需要建立
存储空间的(如int a; );另一种是不需要建立存储空间的
(如extern int a;)。前者称为定义性声明(defining declaration)
,或简称为定义(definition)。后者称为引用性声明(referenceingdeclaration)
。广义地说,声明包括定义,但并非所
有的声明都是定义。对“int a;”
而言,它是定义性
声明,既可说是声明,又可说是定义。而对“
extern int a;”
而言,它是声明而不是定义。一般为了叙述
方便,把建立存储空间的声明称为定义,而把不需
要建立存储空间的声明称为声明。显然这里指的声
明是狭义的,即非定义性声明。例如:
int main( )
{extern
int
a; //
这是声明不是定义。声明a
是一个已定义的外部变量

}
int a; //
是定义,定义a
为整型外部变量
外部变量定义和外部变量声明的含义是不同的。外
部变量的定义只能有一次,它的位置在所有函数之
外,而同一文件中的外部变量的声明可以有多次,
它的位置可以在函数之内,也可以在函数之外。系
统根据外部变量的定义分配存储单元。对外部变量
的初始化只能在定义时进行,而不能在声明中进行。
所谓声明,其作用是向编译系统发出一个信息,声
明该变量是一个在后面定义的外部变量,仅仅是为
了提前引用该变量而作的声明。extern
只用作声
明,而不用于定义。

所以(a)(c)(d)为使命;(b)为定义
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-10
回一楼,,如果我没记错的话,所有有初始化的声明都是定义性声明
相似回答