C语言 static - C语言零基础入门教程
生活随笔
收集整理的這篇文章主要介紹了
C语言 static - C语言零基础入门教程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一.static 簡介
- 二.static 修飾變量
- 1.static 局部靜態變量
- 2.static 全局靜態變量
- 三.static 修飾函數
- 四.猜你喜歡
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.static 簡介
在 C 語言中,static 關鍵字不僅可以用來修飾變量,還可以用來修飾函數。在使用 static 關鍵字修飾變量時,我們稱此變量為靜態變量。
1.如果局部變量使用 static 修飾,那么該變量就是局部靜態變量;
#include <stdio.h>int main() {static int x = 0; //局部靜態變量printf("www.codersrc.com");return 0; }2.如果全局變量使用 static 修飾,那么該變量就是全局靜態變量;
#include <stdio.h>static int x = 0; //全局靜態變量int main() {printf("www.codersrc.com");return 0; }3.如果函數使用 static 修飾,那么該函數就是靜態函數;
/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 static //@Time:2021/07/18 07:30 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/#include <stdio.h>static int func() //靜態函數 {printf("靜態函數");return 0; }int main() {func();printf("www.codersrc.com");return 0; } /* 輸出:靜態函數www.codersrc.com */二.static 修飾變量
1.static 局部靜態變量
定義在函數內部的變量稱為局部變量(Local Variable),它的作用域僅限于函數內部, 離開該函數后就是無效的,生命周期直接結束,再使用就會報錯。
而使用 static 修飾的局部靜態變量,它的作用域僅限于函數內部, 離開該函數后就是無效的,**生命周期**直到程序結束,舉個栗子:
/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 static //@Time:2021/07/18 07:30 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************/#include <stdio.h>int func1() {int x = 5;x++;printf("函數func1 局部變量 x = %d\n",x);return 0; }int func2() {static int x = 10;x++;printf("函數func2 靜態局部變量 x = %d\n",x);return 0; }int main() {for(int i = 0;i<10;i++){func1();func2();}return 0; } /* 輸出:函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 11 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 12 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 13 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 14 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 15 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 16 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 17 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 18 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 19 函數func1 局部變量 x = 6 函數func2 靜態局部變量 x = 20 */在函數 func 1 和 func 2 中都有變量 x , 根據輸出的結果可以看出來,不管是普通局部變量還是 static 修飾的靜態局部變量,作用域僅僅只在函數內部有效;
由此可見,靜態局部變量的效果跟全局變量有一拼,但是作用域僅僅限于函數體內部;
2.static 全局靜態變量
- 1.static 全局變量只初使化一次;
- 2.在單個 .h 或者 .c 文件中,普通全局變量和 static 修飾的 全局靜態變量是一樣的;
- 3.當一個程序由多個 .h 或者 .c 文件組成時,全局變量在各個源文件中都是有效的 ,而 static 修飾的 全局靜態變量僅僅只能在當前的 .h 或者 .c 文件使用,其他文件聲明或者定義相同名字的全局變量也不會產生沖突,從而達到降低程序耦合性的目的;
- 4.static 修飾的變量都存放在靜態數據區,內存中所有的字節默認值都是 0x00(全局變量也一樣),因此全局變量和 static 修飾的變量默認值為 0。
三.static 修飾函數
- 靜態函數只能在聲明它的文件中可見,其他文件不能引用該函數
- 不同的文件可以使用相同名字的靜態函數,互不影響
下面兩個文件的例子說明使用 static 聲明的函數不能被另一個文件引用:
/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 static //@Time:2021/07/18 07:30 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************//* file1.c */ #include <stdio.h>static void fun(void) {printf("hello from fun.\n"); }int main(void) {fun();fun1();return 0; }/* file2.c */ #include <stdio.h>static void fun1(void) {printf("hello from static fun1.\n"); } /* 輸出: error:file1.c:(.text+0x20):對‘fun1’未定義的引用 collect2: error: ld returned 1 exit status */修改文件,不使用 static 修飾符,可在另一文件中引用該函數:
/******************************************************************************************/ //@Author:猿說編程 //@Blog(個人博客地址): www.codersrc.com //@File:C語言教程 - C語言 static //@Time:2021/07/18 07:30 //@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累! /******************************************************************************************//* file1.c */ #include <stdio.h>static void fun(void) {printf("hello from fun.\n"); }int main(void) {fun();fun1();return 0; }/* file2.c */ #include <stdio.h>void fun1(void) {printf("hello from static fun1.\n"); }/* 輸出: hello from fun. hello from static fun1. */四.猜你喜歡
未經允許不得轉載:猿說編程 ? C 語言 static
總結
以上是生活随笔為你收集整理的C语言 static - C语言零基础入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Hello World入门
- 下一篇: BugkuCTF-MISC题做个游戏