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