C++中的局部變量、全局變量、局部靜態(tài)變量、全局靜態(tài)變量的區(qū)別
局部變量(Local variables)與 全局變量:
在子程序或代碼塊中定義的變量稱為局部變量,在程序的一開始定義的變量稱為全局變量。
全局變量作用域是整個(gè)程序,局部變量作用域是定義該變量的子程序或代碼塊。
當(dāng)全局變量與局部變量同名時(shí):在定義局部變量的子程序內(nèi),局部變量起作用;在其它地方全局變量起作用。
全局變量在程序開始運(yùn)行期間就已經(jīng)在內(nèi)存中開辟了內(nèi)存空間,直到程序結(jié)束才會(huì)釋放這塊內(nèi)存空間。
全局變量要在其他文件中使用,需顯示的聲明這個(gè)變量,使用extern關(guān)鍵字聲明(extern int nData;)。
int nData = 10; // 這是一個(gè)全局變量 int main() { int i = 0; // 這是一個(gè)局部變量,這個(gè)變量只在main函數(shù)中有效。 int nData = 100; // 這也是一個(gè)局部變量,但是這個(gè)局部變量與全局變量重名了,那么如果訪問(wèn)nData這個(gè)變量的時(shí)候到底訪問(wèn)的是哪個(gè)? cout << nData << endl; return 0; }
這段代碼輸出的值是100,因?yàn)楫?dāng)局部變量與全局變量重名時(shí),訪問(wèn)的是局部變量。否則訪問(wèn)的則是全局變量!
局部靜態(tài)變量:
局部static變量與全局變量一樣,在程序開始運(yùn)行期間就已經(jīng)在內(nèi)存中開辟了空間,直到程序結(jié)束才會(huì)釋放這塊內(nèi)存空間。
一個(gè)局部static變量只定義/初始化一次,后序都不再定義或初始化。
局部static變量只能在定義的子程序或代碼塊中訪問(wèn),不能在外部訪問(wèn),所以叫局部靜態(tài)變量。
全局靜態(tài)變量:
全局static變量與局部static變量一樣,在程序開始運(yùn)行期間就分配了內(nèi)存地址。
局部static變量只能在定義的代碼塊中被訪問(wèn),而全局static變量只能在定義的文件中被訪問(wèn)。不能跨文件訪問(wèn)。
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
C指針原理教程之編譯原理-小型計(jì)算器實(shí)現(xiàn)
本文給大家分享的是如何使用C語(yǔ)言編寫一個(gè)小型計(jì)算器的實(shí)例代碼,有需要的小伙伴可以參考下2019-02-02C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系
這篇文章主要介紹了C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系的相關(guān)資料,需要的朋友可以參考下2017-01-01C++中智能指針unique_ptr的實(shí)現(xiàn)詳解
智能指針本質(zhì)上并不神秘,其實(shí)就是?RAII?資源管理功能的自然展現(xiàn)而已,這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)?C++中智能指針的?unique_ptr,需要的可以了解下2024-01-01Qt基礎(chǔ)開發(fā)之Qt多線程類QThread與Qt定時(shí)器類QTimer的詳細(xì)方法與實(shí)例
這篇文章主要介紹了Qt基礎(chǔ)開發(fā)之Qt多線程類QThread與Qt定時(shí)器類QTimer的詳細(xì)方法與實(shí)例,需要的朋友可以參考下2020-03-03QT5中使用QRegularExpression代替QRegExp方法代碼
這篇文章主要給大家介紹了關(guān)于QT5中使用QRegularExpression代替QRegExp的相關(guān)資料,正則表達(dá)式(regep)是處理字符串和文本的強(qiáng)大工具,驗(yàn)證regexp可以測(cè)試子字符串是否滿足某些條件,例如是整數(shù)或不包含空格,需要的朋友可以參考下2024-04-04