c 中的全域性變數的定義與使用

2021-07-29 14:01:08 字數 1204 閱讀 1195

在c++中,怎樣實現乙個單例呢?使用extern關鍵字可以達到這個效果。首先要說明的是extern關鍵字的作用,我們可以像下面的**一樣使用它來宣告變數,

extern

int a;

這樣就表明宣告了整型變數a,但是系統沒有給變數a分配記憶體空間。

好了,現在正是介紹怎樣在c++中使用全域性變數或者說是單例,已知有兩個c++原始檔,分別是a.h和b.h,兩個檔案中的內容如下**,

file

int x = 5;

class

a;

file

extern

int x;

class b

; file

void b::printx()

void b::resetx(int newx)

上面的**很簡單,首先我們來看b.h檔案,它在使用extern關鍵字宣告了整形變數x,它告訴編譯器,我這裡只是宣告了變數x,但是沒有給它賦值,你要到其他的相關檔案中找到x變數的定義。這樣編譯器就會在其他的檔案中尋找,最終它在a.h檔案中找到了定義在開頭的int x = 5;語句,該語句就是定義了x變數,這正是b.h和b.cpp檔案所需要的,然後它就可以拿來在它的printx()和resetx(int newx)方法中使用了。

那麼有人會問,如果我在另外乙個c.h檔案的開頭再使用int x = 10;定義x變數,這時候有兩個x,對於b.h和b.cpp來說它不就是暈了嗎?如下**,

int x = 10;

class

c;

這種情況我也試了一下,這時候編譯器就會報錯,大概意思就是程式設計師在程式中重複定義了x變數,這時候編譯都不會通過的。

在b.h檔案中使用extern宣告了x整型變數,這時候如果專案中其他的檔案匯入b.h檔案,那麼就可以使用全域性定義的變數x,所以你想要在其他檔案中使用全域性變數,就要匯入b.h標頭檔案,使用下面的預處理指令#include,

#

include

"b.h"

總結:這裡只是使用了基本的型別int來宣告和定義變數,我們也可以使用自定義的類來宣告和定義變數,在全域性使用,例如在定義的person類,這裡不再贅述,原理都是一樣的。

C 全域性變數的宣告與定義

1.header1.h中宣告全域性變數,header1.cpp中定義全域性變數 header1.h ifndef header1 h define header1 h extern int g n 標頭檔案中必須加extern宣告全域性變數,不賦值 int g o 錯誤 int g o 10 錯誤 ...

C 中全域性變數的使用

在c 中全域性變數的定義與使用做一下下面簡單的記錄,方便日後查閱,也與大家一起學習。1.全域性變數的宣告 1 在標頭檔案.h中進行宣告,如果在此檔案之外也要使用該變數,則在變數宣告前加extern extern int a 2 在標頭檔案.h中進行宣告,只在該檔案中進行使用,不需要加extern i...

C語言中的全域性變數定義與使用

1.書中對 全域性變數 的定義 在函式內定義的變數是區域性變數,而在函式外定義的變數叫做外部變數,外部變數是全域性變數。全域性變數可以為本檔案中其他函式所共用它的有效範圍從定義變數的位置開始到本原始檔結束。建立全域性變數的作用是增加了函式間資料聯絡的渠道。2.譚浩強 書中對 全域性變數 的宣告 用e...