當前位置:首頁 » 編程語言 » c語言定義static變數

c語言定義static變數

發布時間: 2023-02-05 22:56:38

c語言中由Static 定義的變數的作用范圍

static有兩個用途:1.在函數中用來定義變數時,使這個變數變為一個靜太分配的變數,也即函數調用結束後該變數仍然存在,並且他只會初始化一次,且這個初始化是在編譯階段完成的.
2.在函數外用來定義變數時他會使得這個變數只在該文件中可見,也即其他文件是無法訪問的,哪怕加了extern!

Ⅱ C語言static定義變數是軟體不執行嗎,在keil里有一行static執行時候直接都是跳過那又有

在 C 語言中,使用關鍵字 static 定義的變數是靜態變數,具有以下幾個特點:

  • 靜態變數在程序執行過程中不會被自動銷毀,除非手動釋放。

  • 靜態變數的作用域只限於在其聲明的文件內。

  • 靜態變數的初始化只會在程序的第一次執行時進行,之後就不會再進行初始化。

  • 所以,當你在使用 Keil 軟體編譯並執行一個 C 程序時,如果你遇到了一行 static 變數的定義,那麼該變數就已經被初始化過了,在程序執行過程中不會再進行初始化,所以軟體就會跳過這一行。

    如果你希望在程序執行過程中對靜態變數進行重新初始化,可以使用關鍵字 extern 定義該變數,並在其他文件中使用 static 關鍵字重新定義該變數,這樣就可以在程序的不同執行過程中對該變數進行重新初始化了。

Ⅲ static在c語言中是什麼意思

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

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

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

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

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

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

(4)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(計算機高級語言)

Ⅳ C語言static定義靜態變數,不太懂,請解釋一下

static c = 3; 只初始化一次,後面再使用c就是用上次f()返回後c的結果

所以當i=0時,f()中a=2,c初始化為3,c=c+1後c=4,返回a+c=4+2=6。返回後c保持為4
當i=1時,f()中a=2,c初始值為上次返回後的結果4,從而c=c+1=5,函數返回a+c=2+5=7。返回後c保持為5。當i=2時類似

Ⅵ C語言中的靜態變數

其實是這樣的。靜態變數在內存中存儲的位置,與全局變數是同一個區域。
所以,在編譯期間,它的存儲和大小就已經確定了,也就是已經分配了空間了。
而在c語言中,「分配內存」往往看做是變數被定義的一個標志。
所以,你在運行程序的時候,由於靜態變數已經分配過內存了,不會再次進行分配了,它的定義語句就不會再次被執行了。

Ⅶ 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聲明也不可以使用,這樣可以有效避免不同文件全局變數的沖突。
希望能解決您的問題。

Ⅷ 關於c語言static變數

函數中定義的static存儲型變數的地址被返回後,在主調函數中通過指針操作該變數是合法的,以下代碼可以驗證:

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
int*f(void){
statica=1;
return&++a;
}
intmain(void){
int*p=f();
printf("%d ",*p);
*p=7;
printf("%d ",*p);
printf("%d ",*f());
return0;
}

輸出是:

2

7

8

說明很正常。

Ⅸ static在c語言中是什麼意思

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

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

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

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

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

(9)c語言定義static變數擴展閱讀:

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

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

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

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

Ⅹ C語言中靜態變數與動態變數的定義與區別

動態變數和靜態變數定義和區別如下:1、定義上,靜態變數比動態變數多一個關鍵字static,比如:動態變數:inti;靜態變數:staticinti;2、動態變數在子程序中,每次調用時都會從零開始,不會保留原有數據,靜態變數調用時原有值不會發生改變,比如:main(){inti;for(i=0;i<5;i++)fun();//fun1();}voidfun()//輸出結果為11111{intj;j++;printf("%d",j);}voidfun1()//輸出結果為12345{staticintj;j++;printf("%d",j);}
熱點內容
中國大學mooc密碼要求是什麼 發布:2024-11-01 18:33:45 瀏覽:816
jrtplib編譯 發布:2024-11-01 18:06:01 瀏覽:226
java代碼中if 發布:2024-11-01 18:02:40 瀏覽:377
android定時刷新 發布:2024-11-01 17:59:43 瀏覽:999
炎黃解說我的世界伺服器生存 發布:2024-11-01 17:59:42 瀏覽:542
如何清楚網頁緩存 發布:2024-11-01 17:53:58 瀏覽:552
linux文件許可權不夠 發布:2024-11-01 17:53:19 瀏覽:917
c語言中10是什麼意思 發布:2024-11-01 17:45:08 瀏覽:892
裝棉衣壓縮袋 發布:2024-11-01 17:37:18 瀏覽:297
android40ble藍牙 發布:2024-11-01 17:36:58 瀏覽:712