zoukankan      html  css  js  c++  java
  • 【C++】C++中变量的声明与定义的区别

    声明(declaration):意味着告诉编译器关于变量名称、变量类型、变量大小、函数名称、结构名称、大小等等信息,并且在声明阶段不会给变量分配任何的内存。

    定义(definition):定义就是在变量声明后,给它分配上内存。可以看成“定义 = 声明 + 内存分配”。

    例如:

    #include <iostream>
    using namespace std;
    int addtion(int a,int b);//声明
    struct product{unsigned int weight;double price;};//声明
    
    int main(){
    cout << "addtion is " << addtion(6,8) << endl;
    product apple,orange;//定义
    return 0;
    }
    //定义
    int addtion(int a,int b){
    return a+b;
    }

    上面的案例中,

    int addtion(int a,int b);
    struct product{unsigned int weight;double price;};

    上面是声明,它们只是告诉编译器有这个东西,并不会分配内存。

    product apple,orange;
    int addtion(int a,int b){return a+b;}

    上面是定义,给他们会被分配内存。

    声明和定义还有一种常见的,就是extern修饰的变量。当使用extern关键字修饰变量(未初始化),表示变量声明。当在另一个文件中,为extern关键字修饰的变量赋值时,表示变量定义。
    例如:
    header.h

    #ifndef HEADER_H
    #define HEADER_H
    //定义global_x变量 ,在任何包含了该文件的文件中都可以使用global_x变量
    int global_x = 20;
    
    #endif

    file.h

    #include <iostream>
    #include "header.h"
    
    extern int global_x;//声明 global_x 变量
    
    int main(){
    
    std::cout << "global_x = " << global_x << std::endl;
    
    return 0;
    }

    file.h文件声明了global_x变量,但是globar_x变量的定义是在header.h文件中。

    用 g++ file.h -o file 命令编译后会得到可执行文件(file),再用命令 ./file 运行file文件。
    结果如下:

    global_x = 20;
  • 相关阅读:
    【安装软件的点点滴滴】
    【自然语言处理】LDA
    【sklearn】数据预处理 sklearn.preprocessing
    【sklearn】中文文档
    【MySql】update用法
    DotNet Core
    ASP.NET MVC
    ADO.NET
    RESTful API
    C#
  • 原文地址:https://www.cnblogs.com/HDK2016/p/10236702.html
Copyright © 2011-2022 走看看