精华内容
下载资源
问答
  • C++声明和定义区别

    千次阅读 2018-09-02 15:05:46
    定义也是声明:当定义变量时我们声明了它的类型名字。 ④extern关键字:通过使用extern关键字声明变量名而不定义它。   1.定义也是声明,extern声明不是定义,即不分配存储空间。extern告诉编译器变量在其他...

    ①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。

    ②变量声明:用于向程序表明变量的类型和名字。

    ③定义也是声明:当定义变量时我们声明了它的类型和名字。

    ④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; //定义          

     

     

    程序设计风格:

        1. 不要把变量定义放入.h文件,这样容易导致重复定义错误。

        2. 尽量使用static关键字把变量定义限制于该源文件作用域,除非变量被设计成全局的。

        3. 可以在头文件中声明一个变量,在用的时候包含这个头文件就声明了这个变量。

     

    总结:

    变量在使用前就要被定义或者声明。

    在一个程序中,变量只能定义一次,却可以声明多次。

    定义分配存储空间,而声明不会。

     

    C++程序通常由许多文件组成,为了让多个文件访问相同的变量,C++区分了声明和定义。

            变量的定义(definition)用于为变量分配存储空间,还可以为变量指定初始值。在程序中,变量有且仅有一个定义。

            声明(declaration)用于向程序表明变量的类型和名字。定义也是声明:当定义变量的时候我们声明了它的类型和名字。可以通过使用extern声明变量名而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern。

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

            只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。初始化式必须要有存储空间来进行初始化。如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern。

            任何在多文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。

     

     

     

    展开全文
  • 【C/C++面试必备】声明和定义区别

    千次阅读 多人点赞 2021-07-16 07:25:44
    ???? 作者:Linux猿 ???? 简介:CSDN博客专家?...,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!...三、声明和定义区别 3.1 声明/定义次数 3.2 分配内存 3.3 做了什么 本文来介绍一下声明和定义

    🎈 作者:Linux猿

    🎈 简介:CSDN博客专家🏆,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

    🎈 关注专栏:C/C++面试通关集锦 (优质好文持续更新中……)🚀


    目录

    一、变量的声明和定义

    1.1 声明

    1.2 定义

    1.3 区分定义和声明

    二、函数的声明和定义

    2.1 函数声明

    2.2 函数定义

    2.3 函数声明和定义区分

    三、声明和定义的区别

    3.1 声明/定义次数

    3.2 分配内存

    3.3 做了什么


    本文来介绍一下声明和定义的区别,本文中的程序以 C/C++ 为例进行说明。

    一、变量的声明和定义

    1.1 声明

    声明是用来告诉编译器变量的名称和类型,而不分配内存。

    例如:

    extern int var; // 声明
    
    extern int ble =10; // 定义
    
    typedef int INT; // 声明
    
    struct Node; // 声明

    上面代码中,语句 extern int var;表示 var 在别的文件中已经定义,提示编译器遇到此变量时在其它模块中寻找其定义。语句 extern int ble = 10;表示定义了变量 ble,这一点需要注意。

    注意:即使是 extern ,如果给变量赋值了,就是定义了。

    1.2 定义

    定义是为了给变量分配内存,可以为变量赋初值。

    注意:全局变量或静态变量初始值为0,局部变量初始化为随机值。

    在 C/C++ 中,变量的声明和定义区别并不大,定义和声明往往是同时发生,变量定义时,会根据变量类型分配空间,如下所示:

    int value ; //声明 + 定义
    
    struct Node { // 声明 + 定义
        int left;
        int right;
    }; 

    上面代码中,变量名为 value,类型为 int ,分配 4 字节的内存(不同编译器会有差异)。

    1.3 区分定义和声明

    通常变量的定义和声明是同时发生的,注意:extern 变量类型 变量名 仅是声明。

    二、函数的声明和定义

    2.1 函数声明

    函数的声明是通知编译器函数名称、参数数量和类型以及函数返回类型,例如:

    int Max(int x, int y);

    在上面的代码中,函数名为 Max,返回类型为 int 、参数为 int x,int y

    2.2 函数定义

    函数的定义是为函数分配内存,例如:

    int Max(int x, int y) {
    
    return x > y ? x : y;
    
    }

    函数定义包含了函数的具体实现。 

    2.3 函数声明和定义区分

    函数只要有实现(存在函数体 { …… } )即为定义,否则为声明。可以这样理解:函数声明是说明函数是什么,函数定义是说明函数做什么。

    三、声明和定义的区别

    3.1 声明/定义次数

    变量/函数可以声明多次,变量/函数的定义只能一次。

    3.2 分配内存

    声明不会分配内存,定义会分配内存。

    3.3 做了什么

    声明是告诉编译器变量或函数的类型和名称等,定义是告诉编译器变量的值,函数具体干什么。


    🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


    展开全文
  • C++ 声明定义区别

    千次阅读 2017-07-21 15:35:47
    一,声明定义区别 声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述,涉及到内存空间的分配以及初始值的设定。声明和定义有时是同时存在的。 1,定义也是声明,extern声明不是定义,即不分配...

    一,声明与定义的区别

    声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述,涉及到内存空间的分配以及初始值的设定。声明和定义有时是同时存在的。

    1,定义也是声明,extern声明不是定义,即不分配存储空间。

    int a = 10;    //定义就是声明
    extern int b;  //声明,不是定义

    注意:如果使用extern关键字时,对变量进行了初始化,那就是定义。

    extern int b = 20;  //是定义


    2,下列情况下,声明仅仅是声明

    1:  仅仅提供函数原型:void display();
    2:  extern int a;
    3:  class A;
    4:  typedef 声明;
    5:  在类中定义的静态数据成员的声明

    例如:

    class A{
    public:
        static int a;  //声明
    };

    3,下列情况下,定义仅仅是定义

    1:  在类定义之外,定义并初始化一个静态数据成员。如 int A::a = 0;
    2:  在类外定义非内联成员函数。

     

    二,内部链接与外部链接

    在编译时,编译器只检测程序语法和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成目标文件。而在链接程序时,链接器会在所有的目标文件中找寻函数的实现。如果找不到,那到就会报链接错误码。链接把不同编译单元产生的符号联系起来。有两种链接方式:内部链接和外部链接。

    1,内部链接:

    如果一个符号名对于它的编译单元来说是局部的,并且在链接时不可能与其他编译单元中的同样的名称相冲突,那个这个符号就是内部链接。内部链接意味着对此符号的访问仅限于当前的编译单元中,对其他编译单元都是不可见的。


    2,外部链接:

    在一个多文件的程序中,如果一个符号在链接时可以和其他编译单元交互,那么这个名称就有外部链接。外部链接意味着该定义不仅仅局限在单个编译单元中。


    3,函数与变量具有的连接性

    全局变量、非内联成员函数、非内联函数、非静态自由函数都具有外部链接。

    使用const、static关键字声明的函数或变量具有内部链接。


    4,在头文件中可以包含的内容

    声明仅仅是将一个符号引入到一个作用域。而定义提供了一个实体在程序中的唯一描述。在一个给定的作用域中重复声明一个符号是可以的,但是却不能重复定义,否则将会引起编译错误。


    a, 将具有外部链接的定义放在头文件中几乎都是编程错误。因为如果该头文件中被多个源文件包含,那么就会存在多个定义,链接时就会出错。

    b, 在头文件中放置内部链接的定义却是合法的,但不推荐使用的。因为头文件被包含到多个源文件中时,在每个编译单元中有自己的实体存在。大量消耗内存空间,还会影响机器性能。

    展开全文
  • C++定义声明 区别

    万次阅读 多人点赞 2011-04-08 17:13:00
    C++ 声明 定义

     

    C++声明和定义的区别 收藏

     

    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; //定义          

     

     

    程序设计风格:

        1. 不要把变量定义放入.h文件,这样容易导致重复定义错误。

        2. 尽量使用static关键字把变量定义限制于该源文件作用域,除非变量被设计成全局的。

        3. 可以在头文件中声明一个变量,在用的时候包含这个头文件就声明了这个变量。

     

    总结:

    变量在使用前就要被定义或者声明。

    在一个程序中,变量只能定义一次,却可以声明多次。

    定义分配存储空间,而声明不会。

     

           C++程序通常由许多文件组成,为了让多个文件访问相同的变量,C++区分了声明和定义。

            变量的定义(definition)用于为变量分配存储空间,还可以为变量指定初始值。在程序中,变量有且仅有一个定义。

            声明(declaration)用于向程序表明变量的类型和名字。定义也是声明:当定义变量的时候我们声明了它的类型和名字。可以通过使用extern声明变量名而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern

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

            只有当声明也是定义时,声明才可以有初始化式,因为只有定义才分配存储空间。初始化式必须要有存储空间来进行初始化。如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern

            任何在多文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。

     

      --------------------------------------------------------------------头文件中定义与声明

     

    注意头文件中不可以放变量的定义!!!一般情况下头文件中只放变量的声明,因为头文件要被其他文件包含(即#include),如果把定义放到头文件的话,就不能避免多次定义变量,C++不允许多次定义变量,一个程序中对指定变量的定义只有一次,声明可以无数次。

    不过有三个例外,一下三中实体的定义也可放到头文件中。

    1.值在编译时就已知的const 变量的定义可以放到头文件中

    如:const int num10;

    2.类的定义可以放到头文件中

    3.inline 函数

    这三个实体可以定义在多个源文件中,只要在每个源文件中的定义相同。

     

    /--------------------------------------------------------------------头文件中定义与声明

    展开全文
  • C++全局变量的声明和定义

    万次阅读 多人点赞 2012-08-11 09:58:23
    参考:... (1)编译单元(模块) ...第一步,将每个.cpp(.c)相应的.h文件编译成obj文件; 第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。 那么,错误可能在两个地方产
  • c++定义和声明区别

    万次阅读 多人点赞 2018-04-04 08:38:58
    定义和声明的简单说明a.声明就是指给除了当前变量或者函数,或者类什么的名字,不给其中的内容,就是先告诉你有这样一个什么类型的变量或者函数,但是这个变量或者函数的具体信息却是不知道的。就好比跟你介绍一个人...
  • C++类的定义和声明

    千次阅读 2019-05-27 16:08:30
    类是C++中最重要的特征,最简单地说,类就是定义了一个新的类型一个新作用域。每个类可以没有成员,也可以定义多个成员,成员可以是数据,函数或类型别名。 一个类可以包含若干(public)公有的、私有的(private...
  • C++ 申明与定义区别

    千次阅读 2015-06-01 15:08:56
    C++编码过程中谈及“声明定义”是因为我们要使用一个变量、类型(类、结构体、枚举、共用体)或者函数,因此有申明和定义变量、类型函数之说。C/C++中,使用一个变量、类型或者函数必须先在使用前申明它。
  • C++ 声明定义与初始化的基本概念

    万次阅读 多人点赞 2017-03-01 16:39:37
    对于变量:官方的解释:声明...在C++程序中,大多数情况下变量声明也就是变量定义声明变量的同时也就完成了变量的定义,只有声明外部变量时例外。同一个文件下: 对于变量而言,在同一个文件里面,很少使用声明这个
  • C++ 声明定义、初始化、赋值

    千次阅读 2017-10-17 19:53:15
    C++ 声明定义、初始化、赋值 ... 下面就让我们来理清这些概念声明和定义 首先我们要区分 声明 定义区别。 在《C++ primer(第五版)》中写道: C++语言支持分离式编译,该机制允许将程序分割成若
  • C++中变量声明和定义

    千次阅读 2019-02-25 13:55:13
    1、声明和定义都规定了变量的名字类型,但是定义会申请内存空间,也可能为变量赋一个初始值。 2、同一个变量声明可以有多处,但定义只能有一处 extern int i; //声明i而非定义i ...4、函数声明定义区别在于...
  • #include <iostream> using namespace std; // main() 是程序开始执行的地方 ...C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上面这段程序中,包含了头文件 。 ...
  • c++模板函数声明和定义分离

    千次阅读 2016-09-24 12:32:39
    c++模板不支持分离编译, 把你模板类的声明和实现放到.h文件里面 。按照这个说的把.h.cpp文件合并后,果然可以了。 但是为什么呢,为什么模板就不支持分离编译?---继续google ing 搜到了如下文章(文章原文...
  • C++函数声明和定义

    万次阅读 2009-12-16 11:35:00
    这个说明显得很模糊,为什么非要弄个声明和定义在这搅和?那都是因为C++同意将程序拆成几段分别书写在不同文件中以及上面提到的编译器只从上朝下编译且对每个文件仅编译一次。 编译器编译程序时,只会一个一个...
  • C++ 函数的声明和定义

    万次阅读 多人点赞 2019-03-23 01:07:00
    在程序中使用函数时,你必须先声明它然后再定义声明的目的是告诉编译器你即将要定义的函数的名字是什么,返回值的类型是什么以及函数是什么。而定义则是告诉编译器这个函数的功能是什么。假如我们不声明,那么该...
  • c++模板类声明和定义的问题

    千次阅读 2019-08-18 21:38:39
    c++模板是泛型编程的基础,所谓泛型编程也是一种思想,一种抽象数据类型,但是泛型是不属于面向对象,它是面向对象的补充发展。使用泛型编程简单来说就是能让你把一些相同的代码用指定的去替换它,算是程序员找到的...
  • 大多数情况下,声明定义是相同的,但是有少些情况下,声明并非定义,而定义又非声明: 1.是声明,但是并不是定义: 1) 声明了一个没有具体说明函数体的函数; void declaration(int a,int b); 2) 包含了一个...
  • C++声明定义、类的定义、头文件作用、头文件重复引用,不具名空间 转自:http://www.cnblogs.com/rocketfan/archive/2009/10/02/1577361.html  首先说我的补充:(对声明和定义的深入理解总结) 关于...
  • C++之函数的声明和定义

    千次阅读 2017-11-08 22:47:47
    在程序中使用函数时,你必须先声明它然后再定义声明的目的是告诉编译器你即将要定义的函数的名字是什么,返回值的类型是什么以及函数是什么。而定义则是告诉编译器这个函数的功能是什么。加入我们不声明,那么该...
  • C++ 变量的声明和定义

    千次阅读 2019-03-23 00:30:13
    为了支持分离式编译,C++语言将声明和定义区分开来。 变量的声明有两种情况:一种是需要建立存储空间的。例如:inta在声明的时候就已经建立了存储空间。另一种是不需要建立存储空间的。 ...
  • 在C/C++语言中声明和定义区别

    千次阅读 2011-10-18 23:22:21
    刚刚看到c Traps and Pitfalls 看到了 两个定义和声明 觉得有必要理解下  只要大概了解下,只是文字游戏而已 ...举个例子 大家 只要 知道 函数声明和函数的定义区别,其他的就一一了断了  下面作详细的介绍:
  • C++类的声明和定义

    千次阅读 2019-05-20 12:10:13
    这里将采取比较规整的方式来解决这个类的构建问题。 // Date.h #include <iostream> ... //如果有兴趣的话,可以理解下,构造函数自定义的默认的区别 Date(int y, int m, int d); ...
  • c++中模板_类模板的声明和定义

    千次阅读 2017-11-17 11:24:18
    1.1申明和定义 Ø 在函数申明和定义前面,加一个模板template<classT, classC>就行,其余正常定义和申明 Ø 调用时,跟正常函数一样调用 注意: Ø 模板在调用时,才确定参数的具体类型!!! Ø 模板的...
  • C++ 类静态成员变量声明和定义

    千次阅读 2018-11-04 16:45:36
    这是在学习C++类中的一个简单总结 静态成员变量的声明和定义
  • 因此,我们将类定义和函数声明放置在头文件中,普通函数成员函数的定义放置在源文件中。 模板则不同,为了生成一个实例化版本,编译器需要掌握函数模板或者类模板成员函数的定义。 结论: 函数模板类模板成员函数...
  • C/C++ 声明定义

    千次阅读 2011-06-26 14:45:00
    变量的定义(definition...定义也是声明:当定义变量时我们声明了它的类型名字。可以通过使用extern关键字声明变量名而不定义它。 有分配空间的叫定义,没分配空间的叫声明。   另外,“定义”的同时一定耦合
  • C++学习:内部类的声明和定义

    千次阅读 2017-07-02 17:14:35
    C++学习:内部类的声明和定义简介: 内部类也就是内部的类,是包含在一个类里面的类 注意: 此时这个类不属于外部的类,不能通过外部类的对象直接调用内部类,外部的类对内部的类没有任何优越的访问权限提示: 博主:...
  • C++声明定义一个学生信息类。

    千次阅读 2020-05-28 18:06:21
    声明定义一个学生信息类 #include <iostream> #include<cstring> using namespace std; class StInfo { public: int SID; char Name[20]; char Class[20]; char Phone[20]; void SetInfo(int a...
  • C++注意事项】2 变量声明和定义

    千次阅读 2015-05-20 20:59:58
    不可能将所有的C++程序放到一个文件中咯,因此C++就支持了分离式编译(separate compilation)机制,它允许将程序分为若干个文件,每个文件可被独立编译...通过将声明和定义分离开来。声明(declaration)使得名字为程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 407,388
精华内容 162,955
关键字:

c++声明和定义的区别

c++ 订阅