一、形式不同:
創(chuàng)新互聯(lián)公司專注于杭錦網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供杭錦營銷型網(wǎng)站建設(shè),杭錦網(wǎng)站制作、杭錦網(wǎng)頁設(shè)計、杭錦網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造杭錦網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供杭錦網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
靜態(tài)變量是在定義的時候,有static 修飾的變量,形式為static TYPE var_name = init_value;
動態(tài)變量,形式為TYPE var_name = init_value;即沒有static 修飾,其中的=init_value均可省略。
二、作用不同:
動態(tài)全局變量:作用域?yàn)檎麄€項(xiàng)目,即最終編譯成可執(zhí)行文件的所有文件中均可以使用動態(tài)全局變量,生命周期為從程序運(yùn)行到程序退出,即貫穿整個運(yùn)行時間。
靜態(tài)全局變量:作用域?yàn)楫?dāng)前文件,從定義/聲明位置到文件結(jié)尾,生命周期為從程序運(yùn)行到程序退出,即貫穿整個運(yùn)行時間。
常量使用
靜態(tài)變量也可以用于存儲常數(shù)。具體來說,靜態(tài)變量(全局變量及匯編語言里定義的符號亦同)可用const,constant或final(根據(jù)語言決定)等關(guān)鍵字標(biāo)識,這時其值就會在編譯時設(shè)定,并且無法在運(yùn)行時改變。
編譯器通常將靜態(tài)常量與文本一起置于目標(biāo)文件的文本區(qū)域,而非常量初始化數(shù)據(jù)則置于數(shù)據(jù)區(qū);而如若有需要,有些編譯器還可選擇為其開辟專用區(qū);為防止常數(shù)變量被錯誤的指針寫入覆蓋,亦可在這塊區(qū)域啟用內(nèi)存保護(hù)機(jī)制。
以上內(nèi)容參考:百度百科-靜態(tài)變量
動態(tài)變量和靜態(tài)變量定義和區(qū)別如下:
1、定義上,靜態(tài)變量比動態(tài)變量多一個關(guān)鍵字static,比如:
動態(tài)變量:int i;
靜態(tài)變量:static int i;
2、動態(tài)變量在子程序中,每次調(diào)用時都會從零開始,不會保留原有數(shù)據(jù),靜態(tài)變量調(diào)用時原有值不會發(fā)生改變,比如:
main()
{
int i;
for(i=0;i5;i++)fun();//fun1();
}
void fun() //輸出結(jié)果為11111
{
int j;
j++;
printf("%d",j);
}
void fun1() //輸出結(jié)果為12345
{
static int j;
j++;
printf("%d",j);
}
靜態(tài)變量,就是在定義的時候,有static 修飾的變量,形式為
static TYPE var_name = init_value;
而動態(tài)變量,形式為
TYPE var_name = init_value;
即沒有static 修飾。其中的=init_value均可省略。
區(qū)分定義在函數(shù)外的全局變量,和函數(shù)內(nèi)的局部變量,作用域,生命周期,及無顯式初始化時的初始值,均有區(qū)別。
1 動態(tài)全局變量:
作用域?yàn)檎麄€項(xiàng)目,即最終編譯成可執(zhí)行文件的所有文件中均可以使用動態(tài)全局變量。
生命周期為從程序運(yùn)行到程序退出,即貫穿整個運(yùn)行時間。
無顯式初始化時默認(rèn)初始化值為0。
2 靜態(tài)全局變量:
作用域?yàn)楫?dāng)前文件,從定義/聲明位置到文件結(jié)尾。
生命周期為從程序運(yùn)行到程序退出,即貫穿整個運(yùn)行時間。
無顯式初始化時默認(rèn)初始化值為0。
3 動態(tài)局部變量:
作用域?yàn)楫?dāng)前函數(shù),從定義位置,到其所在的{}的結(jié)束位置。
生命周期為從函數(shù)調(diào)用到函數(shù)退出。
無顯式初始化時默認(rèn)初始化值為隨機(jī)值。
4 靜態(tài)局部變量:
作用域?yàn)楫?dāng)前函數(shù),從定義位置,到其所在的{}的結(jié)束位置。
生命周期為從程序運(yùn)行到程序退出,即貫穿整個運(yùn)行時間,當(dāng)下次函數(shù)調(diào)用時,靜態(tài)局部變量不會被再次初始化,而是沿用上次函數(shù)退出時的值。
無顯式初始化時默認(rèn)初始化值為0。
局部變量,如不作專門說明為靜態(tài)變量,都是動態(tài)分配存儲空間,存儲在動態(tài)存儲區(qū)中。這種變量叫自動變量。這種變量只在定義它們的時候才創(chuàng)建,在定義它們的函數(shù)返回時系統(tǒng)回收變量所占存儲空間。對這些變量存儲空間的分配和回收是由系統(tǒng)自動完成的,所以也叫自動變量。一般情況下,不作專門說明的局部變量,均是自動變量。
以int
a為例
如果int
a定義在函數(shù)外,(包括main函數(shù))那么它就是全局變量,在函數(shù)內(nèi)的就是局部變量。
而定義的時候加了static修飾的就是靜態(tài)變量,沒加static的就是動態(tài)變量
靜態(tài)局部變量只能在函數(shù)內(nèi)訪問(并且函數(shù)退出后值會保存,再次進(jìn)入時會保存之前退出時的值),動態(tài)局部變量也只能在函數(shù)內(nèi)訪問,但是函數(shù)推出后再次進(jìn)入時,會重新分配空間,所以值是隨機(jī)值(不初始化的情況)
靜態(tài)全局變量只能在文件內(nèi)訪問,動態(tài)局部變量可以通過extern在其他文件中訪問到。
static關(guān)鍵字就是用來限定變量/函數(shù)的訪問范圍的,函數(shù)內(nèi)或者文件內(nèi)。
文章題目:c語言表示動態(tài)變量函數(shù)嗎,c語言函數(shù)中的靜態(tài)變量
本文地址:http://jinyejixie.com/article44/hsdshe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、云服務(wù)器、手機(jī)網(wǎng)站建設(shè)、App設(shè)計、、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)