Do more! Do better!

声明和定义

Posted on By zjk

看书看到说JAVA不区分声明和定义,突然想起来很久以前查过声明和定义的区别,又突然想不起来了。结果又去找了资料,mark。

《C++Primer》第四版 2.3.5节中这么说到:

①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明变量名而不定义它。

1.定义也是声明,extern声明不是定义,即不分配存储空间。extern告诉编译器变量在其他地方定义了。

例如:extern int i; //声明,不是定义 int i; //声明,也是定义

2.如果声明有初始化式,就被当作定义,即使前面加了extern。只有当extern声明位于函数外部时,才可以被初始化。 例如:extern double pi=3.1416; //定义

3.函数的声明和定义区别比较简单,带有{ }的就是定义,否则就是声明。 例如:extern double max(double d1,double d2); //声明

4.除非有extern关键字,否则都是变量的定义。 例如:extern int i; //声明 int i; //定义