c語言中靜態(tài)變量作常量使用,用于存儲常數(shù)??捎胏onst,constant或final等關(guān)鍵字標識,其值就會在編譯時設(shè)定,并且無法在運行時改變。編譯器通常將靜態(tài)常量與文本一起置于目標文件的文本區(qū)域,而非常量初始化數(shù)據(jù)則置于數(shù)據(jù)區(qū);而如若有需要,有些編譯器還可選擇為其開辟專用區(qū)。
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)離石,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
對于靜態(tài)全局變量來說,針對某一源文件的以static聲明的文件級變量與函數(shù)的作用域只限于文件內(nèi)(只在文件內(nèi)可見),也即“內(nèi)部連接”,因而可以用來限定變量的作用域。
擴展資料:
在函數(shù)內(nèi)以static聲明的靜態(tài)局部變量雖然與自動局部變量的作用域相同(即作用域都只限于函數(shù)內(nèi)),但存儲空間是以靜態(tài)分配而非默認的自動分配方式獲取的,因而存儲空間所在區(qū)域不同。
一般來說,靜態(tài)分配時存儲空間于編譯時在程序數(shù)據(jù)段分配,一次分配全程有效;而自動分配時存儲空間則是于調(diào)用棧上分配,只在調(diào)用時分配與釋放,且兩次調(diào)用間變量值始終保持一致;必須注意,靜態(tài)局部變量只能初始化一次,這是由編譯器來保證實現(xiàn)。
一、形式不同:
靜態(tài)變量是在定義的時候,有static 修飾的變量,形式為static TYPE var_name = init_value;
動態(tài)變量,形式為TYPE var_name = init_value;即沒有static 修飾,其中的=init_value均可省略。
二、作用不同:
動態(tài)全局變量:作用域為整個項目,即最終編譯成可執(zhí)行文件的所有文件中均可以使用動態(tài)全局變量,生命周期為從程序運行到程序退出,即貫穿整個運行時間。
靜態(tài)全局變量:作用域為當前文件,從定義/聲明位置到文件結(jié)尾,生命周期為從程序運行到程序退出,即貫穿整個運行時間。
常量使用
靜態(tài)變量也可以用于存儲常數(shù)。具體來說,靜態(tài)變量(全局變量及匯編語言里定義的符號亦同)可用const,constant或final(根據(jù)語言決定)等關(guān)鍵字標識,這時其值就會在編譯時設(shè)定,并且無法在運行時改變。
編譯器通常將靜態(tài)常量與文本一起置于目標文件的文本區(qū)域,而非常量初始化數(shù)據(jù)則置于數(shù)據(jù)區(qū);而如若有需要,有些編譯器還可選擇為其開辟專用區(qū);為防止常數(shù)變量被錯誤的指針寫入覆蓋,亦可在這塊區(qū)域啟用內(nèi)存保護機制。
以上內(nèi)容參考:百度百科-靜態(tài)變量
靜態(tài)變量是一種生存期為整個源程序的量。雖然離開定義它的函數(shù)后不能使用,但如再次調(diào)用定義它的函數(shù)時,它又可繼續(xù)使用,
而且保存了前次被調(diào)用后留下的值。
第一個printf(
"%d\n",
func(k+=100)
);
k+=100,k就是200;
x++;
y++;
k++;
x=2,y=11,k=201;
所以第一次打印是214
第二個printf(
"%d\n",
func(k+=100)
);
k+=100,k就是300;
x++;
y++;
k++;
x=2,y=12,k=301;(y是靜態(tài)變量,原值不變)
所以第二次打印是315
第三個printf(
"%d\n",
func(k+=100)
);
k+=100,k就是400;
x++;
y++;
k++;
x=2,y=13,k=401;(y是靜態(tài)變量,原值不變)
所以第二次打印是416
靜態(tài)變量的作用是:只有在函數(shù)第一次調(diào)用的時候才初始化。
因為分母是N! N!=(N-1)!*N
所以這里的sum 保存的就是上一個數(shù)的階乘的值