C++中變數的型別
C++變數的作用域有多種,綜述:
(1)作用域為全域性的變數在定義位置到檔案結尾之間都可用
(2)自動變數的作用域為區域性
(3)靜態變數的作用域是全域性還是區域性取決於它是如何被調定義的
1.自動變數
a.函式中宣告的函式引數和變數
b.程式碼塊中定義的變數
C++編譯器對自動變數的實現為,程式留出一段記憶體,並將其視為棧(由於新資料放在原資料的上面,且新資料會最先被銷燬,類似棧),當程式使用完該自動變數時,會將其從棧中刪除。當函式或者程式碼塊執行結束的時候,自動變數將不再存在
2.靜態變數
靜態變數提供了3中連結性:
外部連結性(可在其他檔案中訪問):在程式碼塊的外部宣告
內部連結性(只能在當前檔案中訪問):在程式碼塊的外部宣告,且使用static限定符
無連結性(只能在當前函式或程式碼塊中訪問):在程式碼塊內宣告,且使用static限定符
不論哪種連結性變數,在整個程式的執行過程中,會一直存在,與自動變數相比,它們的壽命更長。如果未進行初始化,編譯器將其初始化為0;
自動變數和靜態變數最大的區別在於:編譯器對兩者的處理不一樣,對自動變數,採用棧;對靜態變數,編譯器將分配固定的記憶體塊來儲存所有的靜態變數,這些變數在整個程式的執行期間一直存在。
C++提供兩種變數的宣告:
一種是定義宣告,即定義;它給變數分配儲存空間,可進行初始化,有兩種方式
Int a;
Extern int a = 1;//進行初始化
另一種是引用宣告,它不給變數分配儲存空間
如果在多個檔案中使用外部變數(全域性,且具有外部連結性),只需在一個檔案中包含該變數的定義,但在使用該變數的其他所有檔案中,都必須使用關鍵字extern宣告它。
(1)作用域為全域性的變數在定義位置到檔案結尾之間都可用
(2)自動變數的作用域為區域性
(3)靜態變數的作用域是全域性還是區域性取決於它是如何被調定義的
1.自動變數
a.函式中宣告的函式引數和變數
b.程式碼塊中定義的變數
C++編譯器對自動變數的實現為,程式留出一段記憶體,並將其視為棧(由於新資料放在原資料的上面,且新資料會最先被銷燬,類似棧),當程式使用完該自動變數時,會將其從棧中刪除。當函式或者程式碼塊執行結束的時候,自動變數將不再存在
2.靜態變數
靜態變數提供了3中連結性:
外部連結性(可在其他檔案中訪問):在程式碼塊的外部宣告
內部連結性(只能在當前檔案中訪問):在程式碼塊的外部宣告,且使用static限定符
無連結性(只能在當前函式或程式碼塊中訪問):在程式碼塊內宣告,且使用static限定符
不論哪種連結性變數,在整個程式的執行過程中,會一直存在,與自動變數相比,它們的壽命更長。如果未進行初始化,編譯器將其初始化為0;
自動變數和靜態變數最大的區別在於:編譯器對兩者的處理不一樣,對自動變數,採用棧;對靜態變數,編譯器將分配固定的記憶體塊來儲存所有的靜態變數,這些變數在整個程式的執行期間一直存在。
C++提供兩種變數的宣告:
一種是定義宣告,即定義;它給變數分配儲存空間,可進行初始化,有兩種方式
Int a;
Extern int a = 1;//進行初始化
另一種是引用宣告,它不給變數分配儲存空間
如果在多個檔案中使用外部變數(全域性,且具有外部連結性),只需在一個檔案中包含該變數的定義,但在使用該變數的其他所有檔案中,都必須使用關鍵字extern宣告它。
相關文章
- c++中的變數型別_C ++中的變數C++變數型別
- c++中變數型別C++變數型別
- C++中的基本變數型別介紹C++變數型別
- C++教程-----C++變數型別和變數的定義C++變數型別
- c++基本型別和變數C++型別變數
- C++ 變數型別查詢C++變數型別
- C++ 查詢某個變數的型別C++變數型別
- c++任意變數型別獲取相關C++變數型別
- C C++變數型別大小和範圍C++變數型別
- c++ typeid().name()輸出變數型別C++變數型別
- c++語言中類的私有型別或保護型別成員變數C++型別變數
- javascript中如何判斷變數的型別?JavaScript變數型別
- JavaScript 中對變數型別的判斷JavaScript變數型別
- c++中的變數C++變數
- C/C++獲取變數型別並輸出C++變數型別
- 《C++ Primer》 ---- 關於變數 與 基本型別C++變數型別
- javascript中對變數型別的判斷方法JavaScript變數型別
- PHP變數型別PHP變數型別
- Java 變數型別Java變數型別
- 變數型別-Set變數型別
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- 淺談變數型別之外的變數命名變數型別
- 1.2 C++變數和資料型別 (Variables and Data types )C++變數資料型別
- JavaScript中的變數、資料型別以及運算子JavaScript變數資料型別
- C++型別引數化C++型別
- C++ 資料算數型別C++型別
- JavaScript - 變數、值、型別JavaScript變數型別
- 資料型別,變數資料型別變數
- 變數型別轉換變數型別
- Python變數型別Python變數型別
- C++入門教程(5):基本資料型別和變數C++資料型別變數
- Rust的變數型別__Data typeRust變數型別
- C++中的條件變數C++變數
- 型別的本質:對變數、型別、指標的理解型別變數指標
- C++類內成員變數可以定義引用型別嗎C++變數型別
- 強型別語言變數和資料型別的理解變數資料型別
- C#變數型別(1):引用型別和值型別 (轉)變數型別
- Dart型別變數-表示資訊Dart型別變數