avatar

目录
C/C++中声明与定义的区别

变量的声明和定义

  • 变量定义:用于为变量分配储存空间,还可以为变量指定初始值。程序中,变量有且仅有一个定义
  • 变量声明:用于向程序表明变量的类型和名字。程序中变量可以多次声明,但只能定义一次
  • 两者联系与区别:
  1. 定义也是声明:因为当定义变量时我们也向程序表明了它的类型和名字;

  2. 声明不是定义:可以使用 extern 关键字声明变量而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字 extern;

    extern int i; //声明,但是不定义
    int i; //声明,也是定义,未初始化

extern声明不是定义,也不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。

注意:

  1. 变量在试用前就要被定义或者声明;

  2. 只有当声明也是定义时,声明才可以有初始化式。因为只有定义才分配存储空间,初始化式必须要有存储空间来进行初始化;

  3. 如果声明中有初始化式,那么它可被当作是定义,即使声明标记为 extern;

  4. 除非有 extern 关键字,否则都是变量的定义。

    extern double pi = 3.1415926; //声明,也定义,初始化

注意:只有当extern声明位于函数外部时,才可以被初始化

函数的声明和定义

函数的声明和定义区别比较简单,带 { } 的就是定义,否则就是声明。

cpp
1
2
3
4
5
6
7
8
int max(int a, int b); //声明
int max(int a, int b) //定义
{
if (a < b)
a = b;
return a;
}

为什么要区分声明和定义?

C/C程序通常由许多文件组成,为了让多个文件访问相同的变量,C/C区分了声明和定义。任何在多个文件中使用的变量都需要既有声明也有定义。在这种情况下,在一个文件中定义了变量,在其他文件中使用变量只需声明,不需要定义(因为变量只能定义一次)。

参考资料:

C语言中声明和定义详解

C++变量的声明和定义 终于搞明白了

文章作者: 大巴斯基
文章链接: http://nieblog.me/2018/04/14/C-C-中声明与定义的区别/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CodeTrainer