當前位置:首頁 » 編程語言 » c語言中static可以修飾
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中static可以修飾

發布時間: 2023-05-23 03:27:37

1. c語言static的作用和用法

static在c語言中是私有、靜態意思。

用於在函數中聲明「靜態變數」用,在每一次調用後,該變數並不在函數返回時立即釋放,變數中保存的值,可以保留到下一次調用時繼續有效。

私有就是隱藏。static函數只兄派氏能聲明後的本文中調用。static全局變數只能聲明後的本文中調用。static局部變數只能聲明後的本函數調用

靜態就是一直存在,相對於每次調用動態分配而言。static函數未驗證是否每次調用代碼地址都是一致的。static全局羨散變數生命周期到程序或進程結束。static局部變數生命周期到程序或進程結束。

static的使用和作用

靜態全局變數。全局變數前加static,修飾全局變數為靜態全局變數,改變全局羨畢變數的可見性。靜態局部變數。局部變數前加static,修飾局部變數為靜態局部變數,改變局部變數的銷毀時期。靜態函數。函數返回類型前加static,修飾函數為靜態函數,改變函數的可見性。

類的靜態成員。類成員前加static,修飾類的成員為類的靜態成員,實現多個對象之間的數據共享,並且使用靜態成員不會破壞封裝性,也保證了安全性。類的靜態函數,類函數前加static,修飾類的函數為靜態函數,減少資源消耗,不需要實例化就可以使用。

2. C語言中變數存儲static和extern兩個關鍵字的作用分別是什麼

在C語言中,static可以用來修飾局部變數,全局變數以及函數。在不同的情況下static的作用不盡相同。

(1)修飾局部變數

一般情況下,對於局部變數是存放在棧區的,並且局部變數的生命周期在該語句塊執行結束時便結束了。但是如果用static進行修飾的話,該變數便存放在靜態數據區,其生命周期一直持續到整個程序執行結束。但是在這里要注意的是,雖然用static對局部變數進行修飾過後,其生命周期以及存儲空間發生了變化,但是其作用域並沒有改變,其仍然是一個局部變數,作用域僅限於該語句塊。

在用static修飾局部變數後,該變數只在初次運行時進行初始化工作,且只進行一次。

如:

程序執行結果為: 2

3

說明在第二次調用fun()函數時,a的值為2,並且沒有進行初始化賦值,直接進行自增運算,所以得到的結果為3.

對於靜態局部變數如果沒有進行初始化的話,對於整形變數系統會自動對其賦值為0,對於字元數組,會自動賦值為''.

(2)修飾全局變數

對於一個全局變數,它既可以在本源文件中被訪問到,也可以在同一個工程的其它源文件中被訪問(只需用extern進行聲明即可)。

如:

有file1.c

int a=1;

file2.c

#include<stdio.h>

extern int a;

int main(void)

{

printf("%d",a);

return 0;

}

則執行結果為 1

但是如果在file1.c中把int a=1改為static int a=1;

那麼在file2.c是無法訪問到變數a的。原因在於用static對全局變數進行修飾改變了其作用域的范圍,由原來的整個工程可見變為本源文件可見。

(3)修飾函數

用static修飾函數的話,情況與修飾全局變數大同小異,就是改變了函數的作用域。

extern關鍵字

在C語言中,修飾符extern用在變數或者函數的聲明前,用來說明「此變數/函數是在別處定義的,要在此處引用」。
在上面的例子中可以看出,在file2中如果想調用file1中的變數a,只須用extern進行聲明即可調用a,這就是extern的作用。在這里要注意extern聲明的位置對其作用域也有關系,如果是在main函數中進行聲明的,則只能在main函數中調用,在其它函數中不能調用。其實要調用其它文件中的函數和變數,只需把該文件用#include包含進來即可,為啥要用extern?因為用extern會加速程序的編譯過程,這樣能節省時間。

3. C語言中static是做什麼用的

有兩種用法:

1、static修飾局部變數,成為一個局部靜態變數。

static修飾局部變數(靜態局部變數)與普通局部變數相比,它的優勢在於:

①靜態局部變數作用域與連接屬性與普通局部變數一樣;

②存儲類:靜態局部變數分配在data/bss段,普通局部變數在棧上;

③生命周期:因為存儲類的不同,靜態局部變數的生命周期得到延長了,直到程序結束。

2、static修飾全局變數與函數,成為靜態全局變數與靜態函數。

static修飾全局變數函數 與 普通全局變數普通函數相比,它的優勢在於:

①存儲類、生命周期、作用域都一樣;

②差別在於static修飾全局變數函數連接屬性是內連接,普通全局變數普通函數是外鏈接;

③就是說static修飾全局變數函數不能跨文件訪問調用。

(3)c語言中static可以修飾擴展閱讀:

在類內數據成員的聲明前加上static關鍵字,該數據成員就是類內的靜態數據成員。其特點如下:

靜態數據成員存儲在全局數據區,靜態數據成員在定義時分配存儲空間,所以不能在類聲明中定義

靜態數據成員是類的成員,無論定義了多少個類的對象,靜態數據成員的拷貝只有一個,且對該類的所有對象可見。也就是說任一對象都可以對靜態數據成員進行操作。而對於非靜態數據成員,每個對象都有自己的一份拷貝。

由於上面的原因,靜態數據成員不屬於任何對象,在沒有類的實例時其作用域就可見,在沒有任何對象時,就可以進行操作

和普通數據成員一樣,靜態數據成員也遵從public, protected, private訪問規則

靜態數據成員的初始化格式:<數據類型><類名>::<靜態數據成員名>=<值>

類的靜態數據成員有兩種訪問方式:<類對象名>.<靜態數據成員名> 或 <類類型名>::<靜態數據成員名>




4. C語言中static修飾變數

可以,static在C語言中是表示一個變數為靜態變數的,而不是常量,也不是不可變的變數。所謂的靜中春態變數有兩種情況,一種是靜態全局變數,一種是靜態局部變數。
先說靜態局部變數:通常情況下,在一個函數中定義一個變數,那麼函數退出之後,這個變數就消失了,即使你第二次調用這個函數,裡面的變數也會被重新賦初值。比如我們寫一個函數:
int fun(int a)
{int sum;
sum=sum+a;
return sum;}
這樣無論你是第幾次調用fun這個函數,sum都會重新被賦初值,也就是函數的返回值一直會是a;而不會出現多次調用累加的情況。
但如果你在一個函腔高數中,用static來聲明變數,那麼這個變數雖然在函數外部不可用,但退出函數時,這個變數是不會消失的,下一次再調用這個函數,裡面的值仍然存在。就說上面這個函數,如果你的第一句寫成static int sum;那麼你第一次調用fun(3);函數返回3,第二次再調用fun(5);函伍培尺數返回值是8,因為第一次調用之後的sum=3的值不會消失。

另一種是靜態全局變數。因為是全局變數,不存在退出函數消不消失的問題。所以靜態全局變數和普通全局變數的區別是:普通全局變數在其他源文件中可以通過extern全局變數名的聲明,來使用該變數,而靜態全局變數只能在變數所在的文件中使用,即使你在其他文件中使用extern聲明也不可以使用,這樣可以有效避免不同文件全局變數的沖突。
希望能解決您的問題。

5. static在c語言中是什麼意思

寫在局部變數前面表示變數是靜態變數,函數調用結束後變數不回收。

寫在全局變數前面,表示靜態全局變數,該變數只能在本文件中訪問,不可以被其餘地方extern。

static 出現在不同的地方含義不同的。

如果是在函數之外使用,表示該對像在此文件中是全局可訪問的,在文件之外是不可訪問的。

如果出現在函數內部,則表示該變數不是自動變數,它是一個可以初始化的變數(如果不進行顯式初始化,默認值是0)。改變了它的值以後,函數結束時它的值也會保留。

(5)c語言中static可以修飾擴展閱讀:

static int n; //定義靜態全局變數改為int n; //定義全局變數

再次編譯運行程序,細心體會全局變數和靜態全局變數的區別。

全局變數是不顯式用static修飾的全局變數,全局變數默認是有外部鏈接性的,作用域是整個工程,在一個文件內定義的全局變數,在另一個文件中,通過extern 全局變數名的聲明,就可以使用全局變數。

全局靜態變數是顯式用static修飾的全局變數,作用域是聲明此變數所在的文件,其他的文件即使用extern聲明也不能使用。

6. c語言中static說明是什麼意思

在C語言中,static關鍵字的作用如下:

1、在修飾變數的時,static修飾的靜態局部變數只執行一次,而且延長了局部變數的生命周期,直到程序運行結束以後才釋放。

2、static修飾全局變數的時,這個全局變數只能在本文件中訪問,不能在其它文件中訪問,即便是extern外部聲明也不可以。

3、static修飾一個函數,則這個函數的只能在本文件中調用,不能被其他文件調用。Static修飾的局部變數存放在全局數據區的靜態變數區。

(6)c語言中static可以修飾擴展閱讀:

static關鍵字在C語言、C++、java中的作用有著相似之處,但也存在差異:

一、C++的static用法:

1、面向過程程序設計中的static和面向對象程序設計中的static。前者應用於普通變數和函數,不涉及類;後者主要說明static在類中的作用。

2、在類中,static可以用來修飾靜態數據成員和靜態成員方法

靜態數據成員

(1)靜態數據成員可以實現多個對象之間的數據共享,它是類的所有對象的共享成員,它在內存中只佔一份空間,如果改變它的值,則各對象中這個數據成員的值都被改變。

(2)靜態數據成員是在程序開始運行時被分配空間,到程序結束之後才釋放,只要類中指定了靜態數據成員,即使不定義對象,也會為靜態數據成員分配空間。

(3)靜態數據成員既可以通過對象名引用,也可以通過類名引用。

靜態成員函數

(1)靜態成員函數和靜態數據成員一樣,他們都屬於類的靜態成員,而不是對象成員。

(2)非靜態成員函數有this指針,而靜態成員函數沒有this指針。

(3)靜態成員函數主要用來方位靜態數據成員而不能訪問非靜態成員。

二、java的static用法:

1、聲明為static的變數稱為靜態變數或類變數。可以直接通過類名引用靜態變數,也可以通過實例名來引用靜態變數,但最好採用前者,因為後者容易混淆靜態變數和一般變數。

2、聲明為static的方法稱為靜態方法或類方法。靜態方法可以直接調用靜態方法,訪問靜態變數,但是不能直接訪問實例變數和實例方法。靜態方法中不能使用this關鍵字,因為靜態方法不屬於任何一個實例。

參考資料來源:網路-static(計算機高級語言)

7. static關鍵字的作用

static關鍵字的作用如下:

1、修飾變數

靜態全局變數:全局變數前加static修飾,該變數就成為了靜態全局變數。我們知道,全部變數在整個工程都可以被訪問,而在添加了static關鍵字之後,這個變數就只能在本文件內被訪問了。因此,在這里,static的作用就是限定作用域。

靜態局部變數:局不變數添加了static修飾之後,該變數就成為了靜態局部變數。我們知道局部變數在離開了被定義的函數後,就會被銷毀,而當氏笑使用static修飾之後,它的作用域就一直到整個程序結束。因此,在這里static的作用就是限定生命周期。

2、修飾函數

修飾函數則該函數成為靜態函數,函數的作用域僅限於本文件,而不能被其它信輪文件調用。

c語言介紹

C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設殲坦含計語言。