C語(yǔ)言:變量的作用域和生命周期詳解
1.全局變量和局部變量
定義在代碼塊外部的是全局變量
定義在代碼塊內(nèi)部的是局部變量
什么是代碼塊?
//這是代碼快外部 int main() { //這是代碼塊內(nèi)部 }
實(shí)際上用int main來演示是不太對(duì)的,實(shí)際使用的時(shí)候我們定義變量是在int main內(nèi)部定義的
下面這個(gè)例子更加清晰明了
int main() { int i = 0;//這是代碼塊外部-i全局變量 for(i=0;i<10;i++) {//代碼塊開始 int j=0;//這是代碼塊內(nèi)部-j局部變量 for(j=0;j<10;j++) }//代碼塊結(jié)束 }
需要注意的是:
同一個(gè)變量a可以在全局,局部變量中間同時(shí)使用,局部變量?jī)?yōu)先
這里是指同時(shí)存在,同時(shí)使用,但不能同時(shí)定義
在局部的代碼塊中重新定義一個(gè)全局變量是錯(cuò)誤的
下面這種形式就是 同時(shí)使用一個(gè)變量
int main() { int sz = 8; int i = 0; if(i<sz) { i=1; } }
- 在我們定義變量的時(shí)候,變量的名字不能相同
- 同時(shí)變量的名字也不應(yīng)和庫(kù)函數(shù)名相同
簡(jiǎn)單的說就是變量不要重復(fù),也別和庫(kù)函數(shù)沖突
2.變量的作用域
變量的作用域->變量的生效區(qū)域
- 局部變量只在它自己的代碼塊中生效
- 全局變量的作用域是整個(gè)代碼
注:在VS中全局變量的作用域是整個(gè)工程
作用域的規(guī)定了變量生效區(qū)域
如果你在局部變量的代碼塊外部使用這個(gè)局部變量
這樣是無效的,無法使用
2-1.聲明外部變量的方法
在vs中全局變量的作用域是整個(gè)工程
但是如果源文件不同,我們需要打一串聲明來應(yīng)用工程文件中另外一個(gè)源文件的全局變量
extern int a
以下是聲名變量和定義變量的代碼示例
extern int a;//聲明全局變量a int a; //定義全局變量a extern int a =0 ;//定義全局變量a 并給初始值 int a =0;//定義全局變量a,并給初始值
3.變量的生命周期
生命周期這個(gè)概念和作用域十分相似
- 局部變量的生命周期從進(jìn)入"{“開始,離開”}"結(jié)束
- 全局變量的生命周期是整個(gè)程序(VS項(xiàng)目)
4. 局部變量&自動(dòng)變量
局部變量又稱自動(dòng)變量
auto int a = 0;
實(shí)際使用的時(shí)候我們一般都是省略auto的
總結(jié)
本片文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Dev C++編譯時(shí)運(yùn)行報(bào)錯(cuò)source file not compile問題
這篇文章主要介紹了Dev C++編譯時(shí)運(yùn)行報(bào)錯(cuò)source file not compile問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01淺析char 指針變量char *=p 這個(gè)語(yǔ)句的輸出問題
下面小編就為大家?guī)硪黄獪\析char 指針變量char *=p 這個(gè)語(yǔ)句的輸出問題。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05關(guān)于函數(shù)調(diào)用方式__stdcall和__cdecl詳解
下面小編就為大家?guī)硪黄P(guān)于函數(shù)調(diào)用方式__stdcall和__cdecl詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09C語(yǔ)言深入講解指針與結(jié)構(gòu)體的使用
指針提供了對(duì)地址操作的一種方法,因此,使用指針可使得C語(yǔ)言能夠更高效地實(shí)現(xiàn)對(duì)計(jì)算機(jī)底層硬件的操作。另外,通過指針可以更便捷地操作數(shù)組。C數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是C編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許您存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng)2022-05-05Qt實(shí)現(xiàn)導(dǎo)出QTableWidget/QTableView數(shù)據(jù)
這篇文章主要介紹了在Qt中實(shí)現(xiàn)將QTableWidget或者QTableView中的數(shù)據(jù)直接導(dǎo)出的示例代碼,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-01-01利用C語(yǔ)言編寫一個(gè)無限循環(huán)語(yǔ)句
這篇文章主要介紹了利用C語(yǔ)言編寫一個(gè)無限循環(huán)語(yǔ)句問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11cin.get()和cin.getline()之間的區(qū)別
以下是對(duì)cin.get()和cin.getline()的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-09-09使用root權(quán)限運(yùn)行自己所編譯程序的解決方法
本篇文章介紹了,使用root權(quán)限運(yùn)行自己所編譯程序的解決方法。需要的朋友參考下2013-05-05Qt中關(guān)聯(lián)容器QMap,QMultiMap,QHash,QMultiHash的使用
本文主要介紹了Qt中關(guān)聯(lián)容器QMap,QMultiMap,QHash,QMultiHash的使用,這些關(guān)聯(lián)容器在Qt中提供了靈活而強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)選項(xiàng),根據(jù)具體的需求和使用場(chǎng)景,您可以選擇適合的容器來存儲(chǔ)和管理數(shù)據(jù),感興趣的可以了解一下2023-09-09