多檔案中的static

2022-02-16 02:53:25 字數 1861 閱讀 5812

這裡借鑑一篇文章:

在這裡舉個例子,先和你說說區域性變數和全域性變數。

#include #include void function2();

void function1();

void function3();

unsigned int iii = 0; //初始化全域性變數

void main()

}/*區域性變數記得初始化*/

void function1()

void function2()

void function3()

輸出結果為:

主函式前宣告了function1(),function2(),function3(),以及宣告並且初始化了乙個全域性變數 iii 。

我們還是先看functon1(),function2()。這兩個函式裡面都宣告並且初始化了區域性變數,但是我從輸出的資料可以看到,變數 i 的資料在每一次進入function1函式時都進行初始化,並且進行自增 1 , 所以每一次的 i 輸出的值每次都是 1.

而function2()函式在宣告變數 ii 時,在開頭加了static,所以會儲存上一次的運算結果,不會再進行初始化。但是作用域也僅僅是在function2(),函式裡面。

那麼可能會有人問,如果不進行初始化會怎麼樣???

當然當然是亂套了啦,沒有進行初始化,區域性變數裡面的數值將是隨機的,不為人知的資料,所以宣告變數的時候還是要對資料進行初始化的。不然的話,程式能不能正確執行都是乙個問題。而在這個keil這個開發環境裡面,不會警告,不會報錯,但是程式不能正確執行。

然後再看全域性變數 iii ,輸出結果和變數 ii ,相同,但是和變數 ii , 有本質性不同的是,全域性變數 iii 可以任意函式使用。而區域性變數 ii 只能是function2使用。這些表象不同也是基於資料儲存的位置不同而影響到資料的生存。區域性變數的資料儲存在堆疊段,全域性變數儲存在資料段。

接下來就說在多個c檔案中static的使用:

首先還是要在工程裡面新增三個c檔案,如下圖所示:

初始化全域性變數

8void

main()919

}20void

function3()

21main_2.c

1 #include 2

static unsigned int iii =10;3

void

function4()

4

main_3.c

1 #include 2

static unsigned int iii =100;3

void

function5()

4

可以看到三個c檔案中,都定義相同的變數 iii ,而且都是各自c檔案的全域性變數。但是卻不衝突。輸出的結果如下圖所示:

所有的iii,雖然同名,但是,他們不是相同的位址。

django中靜態檔案配置static的方法

環境 白話我們可以使用template 設定我們的網頁,同時,乙個完美的網頁需要css,js,image 等靜態檔案的支援。django中配置方式貌似有不少總,因為很多相關的部落格寫的方式並不一致,當然這可能是django 的版本不同導致的。當我們在乙個專案下建立乙個app後,我們就需要為該app下...

static 函式 C 中的static

函式中的靜態變數 當變數宣告為static時,空間將在程式的生命週期內分配,其被存放在在全域性資料區。即使多次呼叫該函式,靜態變數的空間也只分配一次,前一次呼叫中的變數值通過下一次函式呼叫傳遞。這對於在c c 或需要儲存先前函式狀態的任何其他應用程式非常有用。ps 對於乙個完整的程式,在記憶體中的分...

C檔案的static屬性

main.c中有如下定義 include include test.h typedef struct data t typedef enumstate e static void printmain int val int main void test.c檔案中 include include te...