c++中的變數
[i][b]本文為firedragonpzy原創,轉載務必在明顯處註明:
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/935[/b][/i]
轉載自【Softeware MyZone】原文連結: http://www.firedragonpzy.com.cn/index.php/archives/935[/b][/i]
今天研究了下變數,現在分享一下:
變數是有屬性的,包括:變數的資料類別、變數的儲存類別,其中,我們根據變數的儲存類別又可以得知變數的作用域和儲存期兩個屬性。
關於類別就不贅述了,但有可能會在typedef一文中解釋下。下面重點來看變數的儲存類別。
首先,看一下儲存類別的定義:是資料在記憶體中儲存的方法。儲存方法分為靜態儲存和動態儲存。具體包含四種:自動的(auto),靜態的(static),暫存器的(register)和外部的(extern)。
其中靜態儲存和動態儲存決定了變數的儲存器是靜態儲存期還是動態儲存期。
對於動態儲存變數,當程式執行到該變數時才為其分配儲存空間,當程式執行到該變數所在作用域的結束處時自動收回為其分配的儲存空間,因此它的儲存期為所在作用域的時間。這些變數一般是1)函式形式引數2)函式中的自動變數
對於靜態儲存變數,在程式開始就執行就為其分配儲存空間,直到程式結束時,才收回變數的儲存空間,其生命週期為整個程式執行的過程。這些變數一般是全域性的或者靜態的
接下來,詳細介紹一下四種儲存方法;
1 、自動的(auto)
函式中的區域性變數,如果不用static加以宣告,編譯系統對它們是動態分配儲存空間的。
2、靜態的(static)
有兩種,全域性的和靜態的,即在程式執行的過程中始終是佔用一個儲存空間。
3、暫存器的(register)
動態分配方式,編譯器不為暫存器型別的變數分配記憶體空間,而是直接使用cpu的暫存器。以便提高對這類變數的存取速度。主要用於不需要長期儲存的變數。
4、外部的(extern)
只能用來宣告已經定義的全域性(外部)變數,
有兩種情況下需要使用全域性(外部)變數,
(1)在同一源程式檔案中,當在全域性的定義之前使用了該變數,在使用前要對該變數進行外部型別變數宣告。
(2)當程式有多個檔案組成時,若在一個原始檔中要引用在另一個原始檔中定義的全域性變數,在引用前必須對所引用的變數進行外部宣告。
如果在某檔案中定義的全域性變數不想被其他檔案所呼叫,則必須將該變數宣告為靜態全域性變數,也就是說,靜態全域性變數只能供所在的檔案使用。
相關文章
- c++中的變數型別_C ++中的變數C++變數型別
- C++中的條件變數C++變數
- C++中變數的型別C++變數型別
- c++中變數型別C++變數型別
- C++中的基本變數型別介紹C++變數型別
- C++教程-----C++變數型別和變數的定義C++變數型別
- c++ 原始碼中&&變數是什麼意思呢?C++原始碼變數
- C++變數總結束 | 輸出各種變數的值C++變數
- C++ 函式的可變引數C++函式
- c++臨時變數的作用域C++變數
- 關於C/C++ const變數 const指標 以及C++ 引用變數的解析C++變數指標
- JS中的變數JS變數
- awk中的變數變數
- Oracle中的替換變數,&變數名,&&變數名說明Oracle變數
- c++向量變數動作.C++變數
- c++基礎三(變數)C++變數
- c++可變模板引數C++
- C++入門教程(20):變數、不變數和常量C++變數
- C++中的魔鬼數字C++
- C++與Rust變數宣告的比較C++Rust變數
- C++臨時變數的生命週期C++變數
- CentOS shell中的變數CentOS變數
- (10)mysql 中的變數MySql變數
- @property中的變數與_變數
- php中的SERVER變數PHPServer變數
- JAVA介面中的變數Java變數
- MySQL中的@變數名MySql變數
- c++基本型別和變數C++型別變數
- C++逆向 可變引數HookC++Hook
- C++ 變數型別查詢C++變數型別
- 變數C++邏輯程式碼變數C++
- C/C++ 靜態變數解析C++變數
- MySQL中變數的定義和變數的賦值使用MySql變數賦值
- C++筆記:輸入輸出、變數、變數加減乘除C++筆記變數
- [C++]變數宣告與定義的規則C++變數
- C++ 接受狀態變數的lambda表示式C++變數
- C++ 查詢某個變數的型別C++變數型別
- Python中類變數、成員變數、區域性變數的區別Python變數