這裡借鑑一篇文章:
在這裡舉個例子,先和你說說區域性變數和全域性變數。
#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 2main_3.cstatic unsigned int iii =10;3
void
function4()
4
1 #include 2可以看到三個c檔案中,都定義相同的變數 iii ,而且都是各自c檔案的全域性變數。但是卻不衝突。輸出的結果如下圖所示:static unsigned int iii =100;3
void
function5()
4
所有的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...