• c++变量的声明和定义


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

    2.变量的声明:用于向程序表明变量的类型和名字。程序中变量可以声明多次,但只能定义一次

    • 变量的声明有两种情况
      (1) 一种是分配内存空间的(声明)。例如:int a在声明的时候就已经分配了内存空间。
      (2) 另一种是不需要分配内存空间的(声明)。例如:extern int a其中变量a是在别的文件中定义的。

      第一种是"定义性声明",或者称为”定义",第二种是"引用性声明"。可以理解为声明中包含着定义,但是并非所有的声明都是定义,
      例如:int a既是声明,同时又是定义。然而对于extern a来讲它只是声明不是定义。
      

    3.定义和声明的区别
    一般的情况下我们常常这样叙述,把分配内存空间的声明称之为"定义",把不需要分配内存空间称的声明之为"声明"。

    extern int a; //声明
    
    int b;	//定义
    
    int b=1;	//初始化
    
    b=2;	//赋值
    
    //另外在定义的时候也可以初始化,也就是我们常用的写法
    int c=3;
    

    4.为什么需要区分声明和定义:

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

    5.真正用的时候 这种需要被别的文件用的变量,必须在本文件中定义好,比如在文件1中定义int i=0;然后才可以再别的文件中使用,使用方式是:在类体的外部使用extern int i;这样在这个类中就可以使用该外部变量了,再次强调必须先定义好,才能再别的地方通过extern声明使用。例:

    #include <QDebug>
    #include "myclass.h"
    int test_i;//定义 等同于 extern test_i =0;
    MyClass::MyClass(QWidget *parent, Qt::WFlags flags)
     : QMainWindow(parent, flags)
    {
     ui.setupUi(this);
     qDebug()<<test_i;
    }
    
    MyClass::~MyClass()
    {
    
    }
    
    
    
    #include "YourClass.h"
    //#include "myclass.h"
    
    extern int test_i;//在此类类体外部声明,在此类中即可使用
    YourClass::YourClass(void)
    {
     test_i++;
    }
    
    
    YourClass::~YourClass(void)
    {
    }
    
  • 相关阅读:
    【arm】arm平台下char默认数据类型与-fsigned-char
    【arm】arm指令集架构和处理器命名规则和历史
    【shell】正则表达式用法:匹配不包含字符串
    【arm】arm后缀.s和.S的区别以及asm.S说明
    【Optimization/x86】内联汇编Inline assembly——基础学习
    【Optimizaiton/x86】x86 SSE Intrinsic: 点乘算法的Intrinsic实现
    【Optimizaition/x86】Intel CPU的CPUID指令获取的C实现
    【linux】Linux中Core Dump分析
    【shell】linux 查看文件夹以及文件大小数目等信息
    【arm】arm-assembly-print-register-value-in-decimal
  • 原文地址:https://www.cnblogs.com/wsl-hitsz/p/13698199.html
Copyright © 2020-2023  润新知