日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言开发笔记(八)static

發布時間:2023/12/1 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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);#endif

static_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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。