<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # C++ 存儲級別 > 原文: [https://www.programiz.com/cpp-programming/storage-class](https://www.programiz.com/cpp-programming/storage-class) #### 在本文中,您將了解 C++ 中的不同存儲級別。 即:本地,全局,靜態本地,寄存器和線程本地。 C++ 中的每個變量都有兩個特性:類型和存儲級別。 類型指定可以存儲在變量中的數據類型。 例如:`int`,`float`,`char`等。 并且,存儲級別控制變量的兩個不同屬性:生存期(確定變量可以存在多長時間)和范圍(確定程序的哪一部分可以訪問它)。 根據變量的存儲級別,它可以分為 4 種主要類型: * [局部變量](#local_variable) * [全局變量](#global_variable) * [靜態局部變量](#static_variable) * [寄存器變量](#register variable) * [線程本地存儲](#thread_local_storage) * * * ## 局部變量 在函數內部定義的變量(在括號內的[函數](/cpp-programming/function "C++ functions")主體內部定義)稱為局部變量或自動變量。 它的范圍僅限于定義它的函數。 簡而言之,局部變量存在并且只能在函數內部訪問。 函數退出時,局部變量的生命期結束(被銷毀)。 * * * ### 示例 1:局部變量 ```cpp #include <iostream> using namespace std; void test(); int main() { // local variable to main() int var = 5; test(); // illegal: var1 not declared inside main() var1 = 9; } void test() { // local variable to test() int var1; var1 = 6; // illegal: var not declared inside test() cout << var; } ``` 在`test()`內部不能使用變量`var`,在`main()`函數內部不能使用`var1`。 關鍵字`auto`之前也用于定義局部變量:`auto int var;` 但是,在 C++ 11 之后,[`auto`](http://en.cppreference.com/w/cpp/language/auto)具有不同的含義,不應用于定義局部變量。 * * * ## 全局變量 如果在所有函數之外定義了變量,則將其稱為全局變量。 全局變量的范圍是整個程序。 這意味著,在聲明之后,可以在程序的任何部分使用和更改它。 同樣,其壽命僅在程序結束時結束。 * * * ### 示例 2:全局變量 ```cpp #include <iostream> using namespace std; // Global variable declaration int c = 12; void test(); int main() { ++c; // Outputs 13 cout << c <<endl; test(); return 0; } void test() { ++c; // Outputs 14 cout << c; } ``` **輸出** ```cpp 13 14 ``` 在上述程序中,`c`是全局變量。 在上述程序中,此變量對函數`main()`和`test()`均可見。 * * * ### 靜態局部變量 關鍵字`static`用于指定靜態變量。 例如: ```cpp ... .. ... int main() { static float a; ... .. ... } ``` 靜態局部變量僅存在于聲明了它的函數內部(類似于局部變量),但是其生存期始于調用函數時,并且僅在程序結束時結束。 局部變量和靜態變量之間的主要區別在于,靜態變量的值保留在程序的結尾。 * * * ### 示例 3:靜態局部變量 ```cpp #include <iostream> using namespace std; void test() { // var is a static variable static int var = 0; ++var; cout << var << endl; } int main() { test(); test(); return 0; } ``` **輸出** ```cpp 1 2 ``` 在上述程序中,`test()`函數被調用 2 次。 在第一次調用期間,將變量`var`聲明為靜態變量,并將其初始化為 0。然后將 1 添加到屏幕上顯示的`var`。 當函數`test()`返回時,變量`var`仍然存在,因為它是靜態變量。 在第二個函數調用期間,沒有創建新的變量`var`。 將相同的`var`加 1,然后顯示在屏幕上。 **如果未將`var`指定為靜態變量**,則上述程序輸出: ```cpp 1 1 ``` * * * ## 寄存器變量(在 C++ 11 中已棄用) 關鍵字`register`用于指定寄存器變量。 寄存器變量類似于自動變量,并且僅存在于特定函數中。 它應該比局部變量快。 如果程序遇到寄存器變量,則它將變量存儲在處理器的寄存器中,而不是存儲在內存中(如果有)。 這使其比局部變量更快。 但是,此關鍵字在 C++ 11 中已棄用,不應使用。 * * * ## 線程本地存儲 線程本地存儲是一種機制,通過該機制可以分配變量,以便每個現有線程有一個變量實例。 關鍵字`thread_local`用于此目的。 了解有關[線程本地存儲](http://www.codeproject.com/Articles/8113/Thread-Local-Storage-The-C-Way "Thread local storage")的更多信息。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看