C++|全局變量&局部變量&幾個關鍵字的解釋


C++和其他程序設計語言不同,主函數main中定義的變量也是局部的,只有在主函數中才能使用。

在計算機中,內存被分為不同的區域。按照變量在計算機內的儲存位置來分,變量可以分為自動變量、靜態變量、寄存器變量、外部變量。下面逐個介紹。

  • 自動變量auto

如果不專門聲明為其他儲存類型,都是自動變量。因此 auto int a; 和 int a; 是等價的。

## C++11中auto被用於自動推斷了。

  • 靜態變量static

如果不希望該程序其他源文件中的函數使用某全局變量,可以設置為靜態變量,保持結構良好。

如果是應用在局部變量,則該變量不再存放在函數對應的幀中,而是存放在全局變量區。函數執行完畢依然存在,在下次函數調用時繼續使用原空間中的值。也就是說可以把該變量的信息帶到下一次函數調用中。

另:1.未被初始化的靜態變量都由系統初始化為0;2.如果程序中既有靜態的局部變量也有全局變量,則系統先消亡靜態的局部變量,再消亡全局變量。

  • 寄存器變量register

只有局部自動變量才能定義為寄存器變量。系統會把這些變量的值直接存儲在CPU的寄存器中,用於代替自動變量。

現在的編譯器可以識別出頻繁使用的變量,並且會自動進行優化,不需要程序員去進行聲明,而是編譯器自己決定了。

  • 外部變量extern

外部變量一定是全局變量,如果在定義點前或另一個源文件的函數也要使用,就可以設置為外部變量,使用時相當於告訴編譯器此處使用了未見過的變量,將在別處定義。

以上。


免責聲明!

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



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