您好,登錄后才能下訂單哦!
這篇文章主要介紹“C語言關鍵字static的作用和用法”,在日常操作中,相信很多人在C語言關鍵字static的作用和用法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言關鍵字static的作用和用法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1.修飾局部變量
1.1作用
1.2舉例
(1)不加static
(2)加static
(3)靜態局部變量的初始化只會進行一次
2.修飾全局變量
2.1作用
2.2舉例
(1)不加static
(2)加static
3.修飾函數
3.1作用
3.2舉例
(1)不加static
(2)加static
ststic修飾局部變量,會改變局部變量的生命周期,不改變作用域:
生命周期:和全局變量一樣具有全局性,但在內存中的位置沒有改變,還在在靜態存儲區中。
作用域:作用域不改變。
注意:靜態局部變量的初始化在整個變量定義時只會進行一次。
#include <stdio.h> Show() { int j = 0; j++; printf("j=%d\n", j); } int main() { int i = 0; for (i = 0; i < 10; i++) { Show(); } return 0; }
#include <stdio.h> Show() { static int j = 0;//生命周期變為全局的, j++; printf("j=%d\n", j); } int main() { int i = 0; for (i = 0; i < 10; i++) { Show(); } return 0; }
#include <stdio.h> Show() { static int j = 0; j = 3; j++; printf("j=%d\n", j); } int main() { int i = 0; for (i = 0; i < 10; i++) { Show(); } return 0; }
static修飾全局變量,表示全局變量只在本文件內有效,取消了全局變量的跨文件屬性。
由于static對全局變量的作用在一個文件里體現不出來,固我們創建兩個文件,
在test1.c中通過extern引用外部變量g_vale,在test2.c中創建全局變量g_vale 。
test1.c:
#include <stdio.h> extern int g_vale; int main() { printf("g_vale=%d\n", g_vale); return 0; }
test2.c:
#include <stdio.h> int g_vale = 100;//定義全局變量
編譯運行:
test1.c
#include <stdio.h> extern int g_vale; int main() { printf("g_vale=%d\n", g_vale); return 0; }
test2.c
#include <stdio.h> static int g_vale = 100; //定義靜態全局變量
編譯運行:運行失敗,無法解析外部符號g_vale
static修飾函數,和其修飾全局變量類似,表示函數只可在本文件內調用使用,取消了函數的跨文件屬性。
由于static對函數的作用在一個文件里體現不出來,固我們創建兩個文件,
在test1.c中通過extern引用外部函數Show( ),在test2.c中創建Show( )函數
test1.c:
#include <stdio.h> extern Show();//也可以不寫聲明,文件在鏈接時也可以找到,但會出現Warning:Show()未定義 int main() { Show(); system("pause"); return 0; }
test2.c:
#include <stdio.h> void Show() { printf("This is Show()\n"); }
編譯運行:
test1.c:
#include <stdio.h> extern Show(); int main() { Show(); system("pause"); return 0; }
test2.c:
#include <stdio.h> static void Show() { printf("This is Show()\n"); }
編譯運行:運行失敗,無法解析外部符號Show
到此,關于“C語言關鍵字static的作用和用法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。