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)
{
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM