强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁(yè) > 產(chǎn)品 > 問(wèn)答 > 靜態(tài)局部變量,C語(yǔ)言靜態(tài)局部變量和全局變量有什么區(qū)別不都是在整個(gè)程序中都有

靜態(tài)局部變量,C語(yǔ)言靜態(tài)局部變量和全局變量有什么區(qū)別不都是在整個(gè)程序中都有

來(lái)源:整理 時(shí)間:2023-08-18 08:56:54 編輯:智能門(mén)戶(hù) 手機(jī)版

本文目錄一覽

1,C語(yǔ)言靜態(tài)局部變量和全局變量有什么區(qū)別不都是在整個(gè)程序中都有

(1)靜態(tài)局部變量在函數(shù)內(nèi)定義,但不象自動(dòng)變量那樣,當(dāng)調(diào)用時(shí)就存在,退出函數(shù)時(shí)就消失。靜態(tài)局部變量始終存在著,也就是說(shuō)它的生存期為整個(gè)源程序。    (2)靜態(tài)局部變量的生存期雖然為整個(gè)源程序,但是其作用域仍與自動(dòng)變量相同,即只能在定義該變量的函數(shù)內(nèi)使用該變量。退出該函數(shù)后, 盡管該變量還繼續(xù)存在,但不能使用它。      (3)對(duì)基本類(lèi)型的靜態(tài)局部變量若在說(shuō)明時(shí)未賦以初值,則系統(tǒng)自動(dòng)賦予0值。而對(duì)自動(dòng)變量不賦初值,則其值是不定的。 根據(jù)靜態(tài)局部變量的特點(diǎn), 可以看出它是一種生存期為整個(gè)源文件的量。雖然離開(kāi)定義它的函數(shù)后不能使用,但如再次調(diào)用定義它的函數(shù)時(shí),它又可繼續(xù)使用, 而且保存了前次被調(diào)用后留下的值。 因此,當(dāng)多次調(diào)用一個(gè)函數(shù)且要求在調(diào)用之間保留某些變量的值時(shí),可考慮采用靜態(tài)局部變量。雖然用全局變量也可以達(dá)到上述目的,但全局變量有時(shí)會(huì)造成意外的副作用(尤其是短名全局變量的變量名污染很?chē)?yán)重),因此仍以采用局部靜態(tài)變量為宜。 簡(jiǎn)單的說(shuō)靜態(tài)局部變量與全局變量最明顯的區(qū)別就在于:全局變量在其定義后所有函數(shù)都能用,但是靜態(tài)局部變量只能在一個(gè)函數(shù)里面用。

C語(yǔ)言靜態(tài)局部變量和全局變量有什么區(qū)別不都是在整個(gè)程序中都有

2,局部變量靜態(tài)全局變量靜態(tài)局部變量的區(qū)別和聯(lián)系

局部變量與其它兩個(gè)有本質(zhì)區(qū)別。 局部變量,定義在函數(shù)內(nèi),作用域?yàn)槎x位置,到所在大括號(hào)結(jié)束。 每次執(zhí)行到定義語(yǔ)句的時(shí)候,系統(tǒng)為該變量分配內(nèi)存,當(dāng)作用域結(jié)束后,內(nèi)存被釋放。而另外兩個(gè),都是在系統(tǒng)運(yùn)行時(shí)就分配內(nèi)存,在運(yùn)行過(guò)程中都不會(huì)釋放,直到程序結(jié)束。也就是說(shuō),局部變量和其它兩個(gè),最明顯的區(qū)別:1 生命周期不同2 分配時(shí)間不同3 分配位置不同。而另外兩個(gè),在這幾項(xiàng)上是相同的,之間的區(qū)別在于作用域。靜態(tài)全局變量,作用域?yàn)槎x改變量的所在文件。而靜態(tài)局部變量,作用域與普通局部變量一樣,都是定義位置到所在大括號(hào)結(jié)束。
局部變量與其它三個(gè)有本質(zhì)區(qū)別。 局部變量,定義在函數(shù)內(nèi),作用域?yàn)槎x位置,到所在大括號(hào)結(jié)束。 每次執(zhí)行到定義語(yǔ)句的時(shí)候,系統(tǒng)為該變量分配內(nèi)存,當(dāng)作用域結(jié)束后,內(nèi)存被釋放。而另外三個(gè),都是在系統(tǒng)運(yùn)行時(shí)就分配內(nèi)存,在運(yùn)行過(guò)程中都不會(huì)釋放,直到程序結(jié)束。也就是說(shuō),局部變量和其它三個(gè),最明顯的區(qū)別:1 生命周期不同2 分配時(shí)間不同3 分配位置不同。而另外三個(gè),在這幾項(xiàng)上是相同的,之間的區(qū)別在于作用域。全局變量,作用域?yàn)檎麄€(gè)項(xiàng)目,不管在哪個(gè)文件中,只要聲明后都可以使用。靜態(tài)全局變量,作用域?yàn)槎x改變量的所在文件。而靜態(tài)局部變量,作用域與普通局部變量一樣,都是定義位置到所在大括號(hào)結(jié)束。

局部變量靜態(tài)全局變量靜態(tài)局部變量的區(qū)別和聯(lián)系

3,全局變量和靜態(tài)局部變量

全局變量與全局靜態(tài)變量的區(qū)別: (a)若程序由一個(gè)源文件構(gòu)成時(shí),全局變量與全局靜態(tài)變量沒(méi)有區(qū)別。 (b)若程序由多個(gè)源文件構(gòu)成時(shí),全局變量與全局靜態(tài)變量不同:全局靜態(tài)變量使得該變量成為定義該變量的源文件所獨(dú)享,即:全局靜態(tài)變量對(duì)組成該程序的其它源文件是無(wú)效的。 (c)具有外部鏈接的靜態(tài);可以在所有源文件里調(diào)用;除了本文件,其他文件可以通過(guò)extern的方式引用;靜態(tài)全局變量的作用: (a)不必?fù)?dān)心其它源文件使用相同變量名,彼此相互獨(dú)立。(b)在某源文件中定義的靜態(tài)全局變量不能被其他源文件使用或修改。 (c) 只能在本文件中使用!具有內(nèi)部鏈接的靜態(tài);不允許在其他文件里調(diào)用;
局部變量與其它三個(gè)有本質(zhì)區(qū)別。 局部變量,定義在函數(shù)內(nèi),作用域?yàn)槎x位置,到所在大括號(hào)結(jié)束。 每次執(zhí)行到定義語(yǔ)句的時(shí)候,系統(tǒng)為該變量分配內(nèi)存,當(dāng)作用域結(jié)束后,內(nèi)存被釋放。而另外三個(gè),都是在系統(tǒng)運(yùn)行時(shí)就分配內(nèi)存,在運(yùn)行過(guò)程中都不會(huì)釋放,直到程序結(jié)束。也就是說(shuō),局部變量和其它三個(gè),最明顯的區(qū)別:1 生命周期不同2 分配時(shí)間不同3 分配位置不同。而另外三個(gè),在這幾項(xiàng)上是相同的,之間的區(qū)別在于作用域。全局變量,作用域?yàn)檎麄€(gè)項(xiàng)目,不管在哪個(gè)文件中,只要聲明后都可以使用。靜態(tài)全局變量,作用域?yàn)槎x改變量的所在文件。而靜態(tài)局部變量,作用域與普通局部變量一樣,都是定義位置到所在大括號(hào)結(jié)束。

全局變量和靜態(tài)局部變量

4,靜態(tài)局部變量和局部變量有何不同啊 C中

靜態(tài)局部變量的生命周期長(zhǎng),它只被定義一次比如for(int i = 0; i <100; i++) static int c =3;//只執(zhí)行一次。 c++;}地址空間不同,靜態(tài)存儲(chǔ)區(qū)和棧
全局變量和靜態(tài)變量差不多,都是程序剛開(kāi)始就構(gòu)造,程序結(jié)束析構(gòu),局部變量一般在某個(gè)函數(shù)中申明,執(zhí)行函數(shù)時(shí)構(gòu)造,函數(shù)退出析構(gòu),new的變量,什么時(shí)候new什么時(shí)候構(gòu)造,用完后一般自己析構(gòu),想在哪兒在哪兒,如果不主動(dòng)析構(gòu),那么程序結(jié)束會(huì)自己析構(gòu),但這樣會(huì)有內(nèi)存泄漏
局部變量在它的生命期結(jié)束時(shí),它的內(nèi)存也隨之消失,再次使用時(shí)再次申請(qǐng)空間,而靜態(tài)局部變量則不會(huì)釋放當(dāng)前的內(nèi)存,而且只定義一次。例1-100的和:for(int i=1;i<101;i++) static int sum=0; sum+=i;}這里的sum并不會(huì)因?yàn)閟tatic int sum=0;而重新定義,而是保持當(dāng)前的sum的和
靜態(tài)局部變量雖然屬于”局部變量”,但其生命周期與整個(gè)程序的生命周期一樣,只不過(guò)在用不到的時(shí)候不可見(jiàn).當(dāng)其再次被"激活"(也就是程序再次進(jìn)入定義它的程序段時(shí),其值不變).而局部變量,存放于棧中,用完就沒(méi)了.
作用域:相同作用周期:靜態(tài)局部變量類(lèi)似于全局變量,每次進(jìn)入的時(shí)候都使用上一次的值(第一次同局部變量),而局部變量每次重新定義和初始化。

5,全局變量和靜態(tài)局部變量有什么區(qū)別

雖然之前在編程時(shí)對(duì)這四個(gè)“變量”就有不少困惑,但一直沒(méi)去細(xì)究,前兩天在聯(lián)想的筆試題中看到了這樣一道題,貌似知道它們的區(qū)別卻又不能說(shuō)出其中的原理,今天決定將其弄清楚。 局部變量:在一個(gè)函數(shù)中或復(fù)合語(yǔ)句中定義的變量,在動(dòng)態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,在調(diào)用時(shí)動(dòng)態(tài)分配,在函數(shù)或復(fù)合語(yǔ)句結(jié)束時(shí)自動(dòng)釋放; 靜態(tài)局部變量:在一個(gè)函數(shù)中定義局部變量時(shí),若加上static聲明,則此變量為靜態(tài)局部變量,在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,在程序運(yùn)行期間都不釋放;靜態(tài)局部變量只能在該函數(shù)中使用;靜態(tài)局部變量在編譯時(shí)賦值(若在定義時(shí)未進(jìn)行賦值處理,則默認(rèn)賦值為0(對(duì)數(shù)值型變量)或空字符(對(duì)字符型變量));靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后不自動(dòng)釋放,保留函數(shù)調(diào)用結(jié)束后的值; 全局變量:在函數(shù)外定義的變量稱(chēng)為全局變量;全局變量在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,在程序運(yùn)行期間都不釋放,在文件中的函數(shù)均可調(diào)用該全局變量,其他文件內(nèi)的函數(shù)調(diào)用全局變量,需加extern聲明; 靜態(tài)全局變量:在函數(shù)外定義變量時(shí),若加上static聲明,則此變量為靜態(tài)全局變量;靜態(tài)全局變量在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,在程序運(yùn)行期間都不釋放,靜態(tài)全局變量在編譯時(shí)賦值(若在定義時(shí)未進(jìn)行賦值處理,則默認(rèn)賦值為0(對(duì)數(shù)值型變量)或空字符(對(duì)字符型變量));只能在當(dāng)前文件中使用; 參考譚浩強(qiáng)的《C程序設(shè)計(jì)第二版》P180,可從三個(gè)方面對(duì)以上四種變量進(jìn)行區(qū)分:
全局變量和靜態(tài)全局變量的區(qū)別在于作用域不同就是說(shuō)一個(gè)項(xiàng)目里如果有多個(gè)源程序文件非靜態(tài)全局變量可以在所有源文件里調(diào)用靜態(tài)全局變量只能在本文件里調(diào)用,不允許在其他文件里調(diào)用//file1.cppstatic int a;//只能在file1.cpp里使用int b; //可以在file2.cpp里使用extern int c; //file2.cpp里的cint main(void) a = 1; b = 2;}//file2.cppstatic int a;//只能在file2.cpp里使用int c; //可以在file1.cpp里使用extern int b; //file1.cpp里的bint fun(void) c = a + b;}在多文件的項(xiàng)目開(kāi)發(fā)中這樣可以避免由于變量重名造成的沖突

6,c語(yǔ)言中什么是靜態(tài)局部變量

static 用修飾符來(lái)聲明的變量叫靜態(tài)變量。這種變量和一般的變量不同。從程序開(kāi)始到程序結(jié)束一直存在。局部靜態(tài)變量。是在函數(shù)內(nèi)部聲明的靜態(tài)變量。局部靜態(tài)變量的值有一個(gè)特性,它會(huì)保存你操作的結(jié)果。舉個(gè)例子:int test(int a) static int sum = 5; sum += a; return sum;}當(dāng)你第一次調(diào)用時(shí) static int sum = 5;起作用int a1 = test(2);// a1 = 7 同時(shí) sum = 7當(dāng)你第二次調(diào)用時(shí) static int sum = 5;不起作用 sum = 7int a2 = test(2);// a2 = 9 sum = 9這是因?yàn)橛胹tatic聲明的變量分配的地址不是在棧中。在完成第一次調(diào)用后,它仍然存在,并且有個(gè)值。第二次調(diào)用時(shí),并不會(huì)再重新生成一個(gè)變量,還會(huì)使用上一次函數(shù)完成時(shí)的值。
靜態(tài)局部變量具有局部作用域,它只被初始化一次,自從第一次被初始化直到程序運(yùn)行結(jié)束都一直存在,它和全局變量的區(qū)別在于全局變量對(duì)所有的函數(shù)都是可見(jiàn)的,而靜態(tài)局部變量只對(duì)定義自己的函數(shù)體始終可見(jiàn)。
靜態(tài)局部變量相當(dāng)于全局變量(只是只有在這個(gè)函數(shù)中能訪(fǎng)問(wèn),但是生命周期是和全局變量差不多的),函數(shù)退出之后變量還在,而且只在第一次進(jìn)入的時(shí)候做初始化,以后會(huì)跳過(guò)初始化語(yǔ)句,保留原來(lái)的值(也就是說(shuō),如果item是static的,那么只有在第一次進(jìn)入這個(gè)函數(shù)的時(shí)候會(huì)執(zhí)行item=0,以后都不會(huì)執(zhí)行。)。
在函數(shù)內(nèi)部static聲明的變量,在第一次調(diào)用函數(shù)的時(shí)候進(jìn)行初始化,此后對(duì)此函數(shù)的調(diào)用,都使用第一次初始化話(huà)時(shí)的變量,對(duì)函數(shù)內(nèi)部來(lái)說(shuō)就像是使用全局變量一樣,但靜態(tài)局部變量只對(duì)聲明的函數(shù)可見(jiàn)。一般編寫(xiě)底層應(yīng)用的時(shí)候用的比較多
靜態(tài)與實(shí)例相對(duì)應(yīng),靜態(tài)從字面上理解就是“靜態(tài)的-_-”,只初始化一次,并常駐內(nèi)存。
靜態(tài)局部變量相當(dāng)于全局變量,只是只有在這個(gè)函數(shù)中能訪(fǎng)問(wèn),但是生命周期是和全局變量差不多的,函數(shù)退出之后變量還在,而且只在第一次進(jìn)入的時(shí)候做初始化,以后會(huì)跳過(guò)初始化語(yǔ)句,保留原來(lái)的值。
文章TAG:靜態(tài)局部變量C語(yǔ)言靜態(tài)局部變量和全局變量有什么區(qū)別不都是在整個(gè)程序中都有

最近更新

  • 汽車(chē)obd接口,汽車(chē)OBD接口定義的標(biāo)準(zhǔn)是什么汽車(chē)obd接口,汽車(chē)OBD接口定義的標(biāo)準(zhǔn)是什么

    汽車(chē)OBD接口定義的標(biāo)準(zhǔn)是什么2,汽車(chē)車(chē)上的OBD接口是什么東西3,柚子胎壓報(bào)警器說(shuō)的OBD接口是指什么在什么位置4,OBD2有那些接口5,金杯海獅車(chē)的OBD接口在什么位置6,2011款別克君越obd接口在哪.....

    問(wèn)答 日期:2023-08-18

  • 蘋(píng)果4s沒(méi)有移動(dòng)數(shù)據(jù)apn蘋(píng)果4s沒(méi)有移動(dòng)數(shù)據(jù)apn

    蘋(píng)果4smove數(shù)據(jù)沒(méi)用。美版蘋(píng)果4s蜂窩移動(dòng)數(shù)據(jù)打開(kāi)E無(wú)法連接移動(dòng)網(wǎng)絡(luò)怎么辦?蘋(píng)果4s手機(jī)開(kāi)機(jī)數(shù)據(jù)不顯示E-2無(wú)法上網(wǎng)怎么辦/如何設(shè)置手機(jī)上網(wǎng)的參數(shù):進(jìn)入手機(jī)菜單選擇設(shè)置、通用、蜂窩移動(dòng).....

    問(wèn)答 日期:2023-08-18

  • 網(wǎng)關(guān)怎么填,路由器設(shè)置DHCP里的網(wǎng)關(guān)怎么填網(wǎng)關(guān)怎么填,路由器設(shè)置DHCP里的網(wǎng)關(guān)怎么填

    路由器設(shè)置DHCP里的網(wǎng)關(guān)怎么填2,路由器上網(wǎng)關(guān)怎么寫(xiě)3,路由器設(shè)置中以太網(wǎng)網(wǎng)關(guān)地址怎么填4,怎樣填寫(xiě)計(jì)算機(jī)的默認(rèn)網(wǎng)關(guān)5,填完IP和子網(wǎng)掩碼默認(rèn)網(wǎng)關(guān)怎么填6,默認(rèn)網(wǎng)關(guān)怎么填寫(xiě)1,路由器設(shè)置DHCP里.....

    問(wèn)答 日期:2023-08-18

  • 串口是什么,串口是什么意思串口是什么,串口是什么意思

    串口是什么意思2,什么是串口3,什么是串口4,串口是什么5,什么是串口6,電腦的串口是什么意思1,串口是什么意思串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議,串行端口或稱(chēng)串列埠,序列埠,串口,主要.....

    問(wèn)答 日期:2023-08-18

  • 貼片鋁電解電容,貼片鋁電解電容貼片鋁電解電容,貼片鋁電解電容

    貼片鋁電解電容2,貼片鋁鋁電解電容特性參數(shù)3,貼片鋁電解電容有什么作用最主要用于哪些方面4,貼片鋁電解電容與直插的鋁電解電容有區(qū)別么5,貼片鋁電解電容型號(hào)6,常用的貼片鋁電解電容規(guī)格有.....

    問(wèn)答 日期:2023-08-18

  • se98,想咨詢(xún)個(gè)有關(guān)CAN總線(xiàn)傳輸?shù)膯?wèn)題 用CAN總線(xiàn)通信是只能傳輸數(shù)字se98,想咨詢(xún)個(gè)有關(guān)CAN總線(xiàn)傳輸?shù)膯?wèn)題 用CAN總線(xiàn)通信是只能傳輸數(shù)字

    想咨詢(xún)個(gè)有關(guān)CAN總線(xiàn)傳輸?shù)膯?wèn)題用CAN總線(xiàn)通信是只能傳輸數(shù)字2,收銀機(jī)與POS機(jī)器功能區(qū)別我選哪個(gè)各位指點(diǎn)3,看中了方正家電下鄉(xiāng)的電腦不知該選那一款4,創(chuàng)維42e600y接網(wǎng)線(xiàn)后可以上網(wǎng)看電影.....

    問(wèn)答 日期:2023-08-18

  • 火災(zāi)自動(dòng)報(bào)警,火災(zāi)自動(dòng)報(bào)警原理是什么火災(zāi)自動(dòng)報(bào)警,火災(zāi)自動(dòng)報(bào)警原理是什么

    火災(zāi)自動(dòng)報(bào)警原理是什么2,火災(zāi)自動(dòng)報(bào)警系統(tǒng)包括什么內(nèi)容3,什么是火災(zāi)自動(dòng)報(bào)警4,什么是火災(zāi)自動(dòng)報(bào)警及聯(lián)動(dòng)系統(tǒng)5,什么是火災(zāi)自動(dòng)報(bào)警系統(tǒng)6,消防火災(zāi)自動(dòng)報(bào)警系統(tǒng)如何設(shè)置1,火災(zāi)自動(dòng)報(bào)警原理是.....

    問(wèn)答 日期:2023-08-18

  • 聯(lián)想怎么清除數(shù)據(jù),聯(lián)想打印機(jī)如何清除數(shù)據(jù)聯(lián)想怎么清除數(shù)據(jù),聯(lián)想打印機(jī)如何清除數(shù)據(jù)

    聯(lián)想A766手機(jī)如何自行清除系統(tǒng)數(shù)據(jù)?聯(lián)想如何清空手機(jī)系統(tǒng)內(nèi)存?聯(lián)想如何使手機(jī)雙清模式聯(lián)想如果忘記了解鎖密碼,建議自己嘗試一下。如果實(shí)在無(wú)法自己解決,請(qǐng)參考以下建議:1,如果設(shè)備開(kāi)啟了US.....

    問(wèn)答 日期:2023-08-18

相關(guān)文章