C语言开发笔记(八)static
生活随笔
收集整理的這篇文章主要介紹了
C语言开发笔记(八)static
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在C語言中,static有3個作用:
(1)在函數體,一個被聲明為靜態的變量在這一函數體內被調用的過程中維持其值不變。
#include <stdio.h>void test(void) {static int i = 0;printf("%d\n", i++); }int main(void) {test();test();test();return 0; }如果不使用static修飾 int i,結果為。使用后結果為。
?
(2)在模塊內,一個被聲明為靜態的變量可以被模塊內所有的函數訪問,但不能被模塊外其他函數訪問。它是一個本地的全局變量。
在test.c里面聲明一個全局變量
int a = 100;在main.c中也聲明一個全局變量
int a = 200;編譯器報錯
因為a是非靜態全局變量,作用域是整個源程序,而靜態全局變量的作用域限制在定義該變量的源文件內有效。
test.c里面的變量修改為
static int a = 100;編譯通過。
?
(3)在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其他函數調用,這個函數被限制在聲明它的模塊的本地范圍內使用。
比如static_test.h 的內容為
#ifndef STATIC_TEST_H #define STATIC_TEST_Hstatic void static_func(void);void func(void);#endifstatic_test.c的內容為
#include "static_test.h" #include <stdio.h>static void static_func(void) {printf("hello world\n"); }void func(void) {static_func(); }在main.c中去調用static_func(),編譯器會報錯。而static_test.c里調用static_func()是可以的。從而說明static修飾的函數只能在模塊static_test.c里面調用,不允許模塊外調用。
頭文件中static_func()不使用static修飾也可以編譯通過,但是依照代碼規范的要求,必須使用static修飾以增加閱讀性,頭文件使用static修飾表明了該函數不允許使用者調用。
總結
以上是生活随笔為你收集整理的C语言开发笔记(八)static的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安阳治疗排卵障碍最好的医院推荐
- 下一篇: C学习杂记(三)笔试题:字符串大小写字母