色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

static關鍵字的三種用法

撞上電子 ? 2023-11-10 08:00 ? 次閱讀

C語言中,關鍵字"static"可以用于不同的上下文,具有不同的作用。以下是"static"在C語言中的主要作用:


1. 靜態變量(Static Variables):

在C語言中,使用`static`關鍵字來聲明靜態變量是一種常見的用法,它具有以下主要作用:1. 生存期延長:靜態變量的生存期在程序的整個運行期間,而不僅僅是在聲明它的函數調用期間。這意味著靜態變量會在程序啟動時分配內存,并在程序終止時釋放內存。這與自動變量(局部變量)不同,后者的生存期僅限于其所在函數的執行期間。2. 保持狀態:靜態變量的值在函數調用之間保持不變。每次調用包含靜態變量的函數時,該變量的值會保持在上一次調用結束時的狀態。這對于需要在多次函數調用之間共享信息的情況非常有用,例如計數器或緩存。下面是一個示例,演示了靜態變量的作用:

#include

void countCalls() { // 靜態變量,只初始化一次 static int count = 0; count++; // 每次調用遞增計數 printf("Function has been called %d times\n", count);}
int main() { countCalls(); // 輸出:Function has been called 1 times countCalls(); // 輸出:Function has been called 2 timescountCalls();//輸出:Function has been called 3 times
return 0;}

在上面的示例中,`count`是一個靜態變量,它在`countCalls`函數的多次調用之間保持其值,而不會在每次函數調用時被重新初始化。這使得我們能夠跟蹤函數被調用的次數。

2. 靜態函數(Static Functions):

在C語言中,使用`static`關鍵字來聲明靜態函數是一種常見的用法,它具有以下主要作用:1. 作用域限制:靜態函數的作用域被限制在聲明它的源文件(或編譯單元)內部,不能在其他文件中被訪問。這有助于確保函數的私有性,防止其他文件中的代碼無意或惡意地調用它。2. 命名空間隔離:靜態函數的名稱在整個程序中具有唯一性,因為它們只在其源文件內部可見。這減少了命名沖突的風險,因為其他文件中可以有相同名稱的函數,而不會導致沖突。3. 模塊封裝:靜態函數通常用于實現文件范圍的輔助功能,以便在同一文件內的多個函數之間共享代碼,但不希望其他文件能夠訪問這些輔助函數。這有助于將相關功能封裝在一個文件中,以提高代碼的模塊化和可維護性。以下是一個示例,演示了靜態函數的作用:

// 文件: mymodule.c#include // 靜態函數,只在當前文件內可見static void helperFunction() { printf("This is a helper function\n");}
void publicFunction() { printf("This is a public function\n"); helperFunction(); // 可以調用靜態函數}// 文件: main.c#include "mymodule.c"
int main() { publicFunction(); // 可以調用公共函數 // helperFunction(); // 編譯錯誤,無法訪問靜態函數 return 0;}

在上面的示例中,`helperFunction`是一個靜態函數,它只能在`mymodule.c`文件中被訪問。其他文件(例如`main.c`)無法訪問它,從而確保了它的私有性和模塊封裝性。


3. 靜態全局變量(Static Global Variables):

在C語言中,使用`static`關鍵字來聲明靜態全局變量是一種常見的用法,它具有以下主要作用:1. 作用域限制:靜態全局變量的作用域被限制在聲明它的源文件(或編譯單元)內部,不能在其他文件中被訪問。這使得該變量對于文件內的其他函數來說是可見的,但無法在其他文件中訪問。這有助于確保全局變量的私有性,防止其他文件無意或惡意地修改它。2. 數據保持性:靜態全局變量在程序的整個運行期間保持其值,而不會像普通全局變量那樣被銷毀和重建。這使得它適用于需要保持狀態的情況,例如跟蹤應用程序的配置設置、日志級別等信息。3. 命名空間隔離:靜態全局變量的名稱在整個程序中具有唯一性,因為它們只在其源文件內部可見。這減少了全局命名沖突的風險,因為其他文件可以有相同名稱的全局變量,而不會導致沖突。以下是一個示例,演示了靜態全局變量的作用:

// 文件: mymodule.c#include
// 靜態全局變量,只在當前文件內可見static int moduleVar = 42;
void modifyModuleVar(int value) { moduleVar = value;}
void printModuleVar() { printf("moduleVar: %d\n", moduleVar);}// 文件: main.c#include "mymodule.c"
int main() { printModuleVar(); // 輸出:moduleVar: 42 modifyModuleVar(100);printModuleVar();//輸出:moduleVar: 100
// moduleVar = 200; // 編譯錯誤,無法訪問靜態全局變量 return 0;}

在上面的示例中,`moduleVar`是一個靜態全局變量,它只能在`mymodule.c`文件中被訪問。其他文件(例如`main.c`)無法訪問它,從而確保了它的私有性和模塊封裝性。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7608

    瀏覽量

    137111
  • static
    +關注

    關注

    0

    文章

    33

    瀏覽量

    10379
  • 關鍵字
    +關注

    關注

    0

    文章

    37

    瀏覽量

    6911
收藏 人收藏

    評論

    相關推薦

    C語言關鍵字分別發生在哪個階段

    在編譯的第一個階段:預處理,對一些宏定義做替換。 第二個,const。 C語言中的 const 用于修飾只讀變量,表示變量本身不能修改。 這個關鍵字會在編譯的第二步起作用,也就是編譯。強行修改一個只讀變量,編譯就會提示問題。 第個,volatile。 前面講過 vola
    的頭像 發表于 11-24 10:31 ?198次閱讀

    C語言關鍵字--typedef

    C語言關鍵字使用方法學習指南!
    的頭像 發表于 10-07 12:44 ?293次閱讀

    mosfet的三種工作狀態及工作條件是什么

    的工作狀態及工作條件對于理解和設計相關電路至關重要。以下是MOSFET的三種主要工作狀態及其工作條件的介紹。 一、MOSFET的三種工作狀態 MOSFET根據其柵源電壓(VGS)和漏源電壓(VDS
    的頭像 發表于 10-06 16:51 ?2304次閱讀

    單片機的三種總線結構

    單片機的三種總線結構包括地址總線(Address Bus, AB)、數據總線(Data Bus, DB)和控制總線(Control Bus, CB)。這三種總線在單片機內部及與外部設備之間的數據傳輸
    的頭像 發表于 09-10 11:32 ?3337次閱讀

    使用邊緣AI和Sitara處理器進行關鍵字檢測

    電子發燒友網站提供《使用邊緣AI和Sitara處理器進行關鍵字檢測.pdf》資料免費下載
    發表于 09-02 11:30 ?0次下載
    使用邊緣AI和Sitara處理器進行<b class='flag-5'>關鍵字</b>檢測

    typedef struct和直接struct的區別

    使用方式和靈活性上存在一些區別。下面詳細解釋這兩方式的區別和用法。 直接使用 struct 當你直接使用 struct 關鍵字定義一個結構體時,你創建了一個新的類型,但你需要通過 struct
    的頭像 發表于 08-20 10:58 ?2920次閱讀

    放大電路的三種組態可以放大什么

    放大電路是電子學中非常重要的組成部分,它們可以將輸入信號的幅度放大,以滿足各種應用的需求。放大電路的三種基本組態包括共射放大電路、共集放大電路和共基放大電路。每種組態都有其特定的應用和特點。以下
    的頭像 發表于 07-09 14:31 ?1265次閱讀

    快速掌握C語言關鍵字

    C語言中的32個關鍵字你知道多少個呢?根據關鍵字的作用分為四類:數據類型關鍵字、控制語句關鍵字、存儲類型關鍵字和其它
    的頭像 發表于 07-06 08:04 ?368次閱讀
    快速掌握C語言<b class='flag-5'>關鍵字</b>

    inline關鍵字被優化導致此類函數被布局在flash內,怎么處理?

    問題解決。 但是,希望樂鑫官方把idf內源碼中的inline關鍵詞都替換為__attribute((always_inline)),因為inline關鍵字不可靠! 期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權宜之計、臨時之策。
    發表于 06-21 12:03

    嵌入式C語言面試大挑戰

    在C++中static關鍵字除了具有C中的作用還有在類中的使用在類中,static可以用來修飾靜態數據成員和靜態成員方法靜態數據成員
    發表于 03-05 14:18 ?362次閱讀
    嵌入式C語言面試大挑戰

    動態無功補償裝置的三種運行模式

    動態無功補償裝置作為電力系統中重要的設備,扮演著優化功率因數、改善電網穩定性的關鍵角色。在實際運行中,動態無功補償裝置通常有三種主要運行模式,分別為“手動模式”、“自動模式”和“半自動模式”。深入
    的頭像 發表于 02-28 14:17 ?1013次閱讀
    動態無功補償裝置的<b class='flag-5'>三種</b>運行模式

    簡單總結一下嵌入式C++中常見的錯誤形式

    對于 C++ 類,一些關鍵字只要寫在 .h 中就好,cpp 中就不用再加上了,比如 virtual、static關鍵字,如果在 cpp 中多寫,編譯器會報錯。
    的頭像 發表于 02-23 09:40 ?522次閱讀

    關鍵字搜索文件夾中某個TXT文件

    文件夾中隨時創造TXT文件,如何及時選出剛創造的文件?或關鍵字搜索出需要的TXT文件?
    發表于 02-06 15:22

    運放的三種應用

    運放在電路中主要存在三種應用,放大器,濾波器,振蕩器。再這三種應用電路中,運放的兩大特點虛短虛斷仍然成立嗎? 在阻尼振蕩器中,工作過程是否按照我描述的這樣,在反相輸入端加一個近似鋸齒波的電流源,正半
    發表于 01-26 16:18

    在NVM和本地\"內存中定義數組(靜態 /global /local)的\"關鍵字是什么?

    在 NVM 和本地\"內存中定義數組(靜態 /global /local)的\"關鍵字是什么? 還有與 32 位對齊的關鍵字怎么樣。
    發表于 01-25 07:52
    主站蜘蛛池模板: 国产亚洲精品久久久久久久| 久久伊人影院| 成人小视频在线观看| cctv网站| www色视频在线观看| 丰满的寡妇hd高清在线观看| 国产成人精品精品欧美| 国产性色AV内射白浆肛交后入| 国产一及毛片| 久久久精品成人免费看| 免费被靠视频动漫| 青青草 久久久| 十大禁止安装的黄台有风险| 亚洲AV天堂无码麻豆电影| 亚洲专区区免费| 99er久久国产精品在线| 大桥未久在线看| 国产一区精选播放022| 久久精品一区二区三区资源网| 嗯啊快拔出来我是你老师视频| 日韩精品欧美在线视频在线| 亚洲成色爱我久久| 在线免费观看成年人视频| FREECHINESE东北群交| 国产精品一区二区20P| 狼群影院视频在线观看WWW| 人妻无码AV中文系列| 亚洲高清国产拍精品5g| 92国产精品午夜免费福利视频| 纯肉小黄文高H| 九色PORNY蝌蚪视频首页| 青青草原国产在线| 亚洲人成77777| mdapptv麻豆下载| 狠狠色狠狠色88综合日日91| 牛牛在线国产精品| 秀婷程仪公欲息肉婷在线观看| 78m成人亚洲| 国产精品爽爽久久久久久无码 | 无码日韩人妻精品久久蜜桃免费 | 免费高清国产|