C語言初學靜態變量的使用

2020-12-08 魚頭小怪

#C語言初學#在敲代碼時候在定義變量前面有時候會有static修飾,有什麼用呢?我就假假的自問自答一波,畢竟也看過書。在C語言中內存是分了五個區的代碼區,常量區,全局數據區,堆區,棧區。靜態變量就存放在全局數據區。一般我們定義的變量都在棧區。什麼時候可以用static呢,比如說想做函數多次調用遞加

代碼

就像這個代碼樣,你不管在多次調用fun函數他的返回值永遠就只有1。那是fun的函數裡面的變量a它的值是存放在棧區的,棧區有個特點,在fun函數調用完的時候a 就會被釋放。所以下次進入fun函數時a重新。但是要是a是個靜態變量它就會存儲在全局數據區在fun函數結束後靜態變量a就不會消失,進入下一次fun函數後就繼續調用a的值不會重新。

代碼

當然這是我想用靜態變量完成的功能,靜態變量有時用法還是很靈活的,畢竟程序就為了完成我們自己的想法。你想法有好豐富,你就可以編寫很靈活的代碼,當然這是我的看法,還是不能太當真。

代碼初學者,有錯 誤就提喲,學習嘛

魚頭小怪

相關焦點

  • C語言 | static靜態變量
    在編程方面有著天賦異稟的人畢竟是少數,我們大多數人想要從C語言小白進階到高手,需要經歷的是日積月累的學習。那麼如何學習呢?當然是每天都練習一道C語言題目!!作者閆小林白天搬磚,晚上做夢。我有故事,你有酒麼?例87:學習C語言static定義靜態變量的用法。
  • C語言中的變量存儲類型static老手都這樣用
    static int fun2(char c); //內部連結,對外不可見2) 修飾全局變量我們知道,全局變量存儲在靜態存儲區,但是它不是靜態變量,它的作用範圍從定義處到所在源文件末尾。但是它對其它源文件都是有效的,只需要通過extern聲明一下即可,詳見作者的另一篇文章《說一說C語言中的變量存儲類型——「extern」》。但是有些情況下,某些全局變量不想被同程序的其它源文件使用,那麼我們就可以使用static關鍵字聲明一下即可。
  • 說一說C語言中的變量存儲類型——「extern」
    存儲位置不同,決定了變量的生存期和作用域。從時間角度來說,C語言中變量分為靜態存儲和動態存儲兩種情況。靜態存儲指的是變量存儲在內存的靜態存儲區,程序編譯時就為其分配空間並初始化,佔有固定存儲單元直至程序結束。
  • C語言全局變量那些事兒
    由於C語言每個源文件單獨編譯,所以t.h分別包含了兩次,所以int a就被定義了兩次。兩個源文件裡變量b和函數指針變量main被重複定義了,實際上可以看做代碼段的地址。如果滿足規則二,則僅僅提出警告,實際運行時決議的是foo.c中的強符號。而變量a都是弱符號,所以只選擇一個(按照目標文件連結時的順序)。事實上,這種規則是C語言裡的一個大坑,編譯器對這種全局變量多重定義的「縱容」很可能會無端修改某個變量,導致程序不確定行為。如果你還沒有意識到事態嚴重性,我再舉個例子。
  • 深入理解靜態變量
    可以看到其在斷下時,全局靜態變量地址的值就已經有了,因為已初始化的全局變量的值會被寫入到exe文件中,所以其在模塊加載時,就已經有了值,是在mainCRTStartup()函數之前的。我們繼續測試,在C++編譯器環境下,將函數的返回值賦值給全局靜態變量的情況。
  • c編譯器so easy,gcc c編譯器生成、使用動靜態庫
    c編譯器作為常用軟體之一,並非具備無法逾越難度。對於c編譯器的學習,往往需要具備一定耐心。本文對c編譯器的講解基於gcc c編譯器,同時本文承接「c編譯器so easy,gcc c編譯器生成、使用動靜態庫(上篇)」一文而談,不了解的朋友可以先回顧一番哦。此外,本文主要內容為gcc生成靜態和動態連結庫的示例,一起來了解下吧。
  • 掌握C語言的必知要點
    溫故而知新,可以為師矣,初學一門語言的時候,我們會躍躍欲試,並沒有真正深入的理解,經過一段時間的實踐,會產生困惑,學而不思則殆,這時回過頭來看書,會有意想不到的收穫,會豁然開朗,會讓你在以後的實踐中更加運用自如
  • C語言中,全局變量濫用的後果竟如此嚴重?
    01啥是全局變量說起全局變量,就不得不提到「全局變量,局部變量,靜態全局變量,靜態局部變量」,這些都是程式語言中的基本概念。區別在於非靜態全局變量的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。而靜態全局變量則限制了其作用域,即只在定義該變量的源文件內有效,在同一源程序的其他源文件中不能使用它。由於靜態全局變量的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其他源文件中引起錯誤。
  • C語言中的變量詳解
    如:voiddelay(unsignedintx){unsignedchari,j;//ij的作用域只是在delay函數內}關於局部變量的作用域的幾點說明:1、主函數中定義的變量也只能在主函數中使用,不能在其他函數中使用。同時,主函數中也不能使用其他函數中定義的變量。因為主函數也是一個函數,它與其他函數是平行關係。
  • C 語言學習之變量、數據類型
    語言是強數據類型語言,即聲明變量時,需要定義好變量的類型。變量相當於內存中一個數據存儲空間的表示,通過變量名可以訪問到該變量【值】,變量使用的基本步驟:int main(){ int a = 0;
  • C語言之 static
    先總結一下 static 的用法,然後再對每一條進行說明:定義全局靜態變量定義局部靜態變量定義靜態函數
  • c語言是C語言 C教程語言零基礎教學04:int和float變量的基本使用
    大家好,我是陌塵那麼就直接開始了我們這篇教程學for循環以及冒泡算法我們先來理解一下什麼是「循環」字面意思:但是,C語言的循環和這個有點點不同,c語言中大概就是:重複執行一段特定的代碼。且C語言裡面的循環有多種方法來實現常見的有用for和while函數我們這節課只講for函數使用方法:for(單次表達式;條件表達式;表達式){特定代碼;}好了,又到了萬眾矚目的分析時間 了(此刻應有bgm)首先 單次表達式,意思就是只會執行一次的表達式(何為表達式?百度啊!!!)
  • PHP static局部靜態變量和全局靜態變量總結
    靜態局部變量的特點:1.不會隨著函數的調用和退出而發生變化,不過,儘管該變量還繼續存在,但不能使用它。
  • 還在糾結C語言中的動態庫和靜態庫?這樣選就對了!
    動態庫與靜態庫優缺點比較我們在編寫一個 C 語言程序的時候,經常會遇到好多重複或常用的部分,如果每次都重新編寫固然是可以的,不過那樣會大大降低工作效率,並且影響代碼的可讀性,更不利於後期的代碼維護。我們可以把他們製作成相應的功能函數,使用時直接調用就會很方便,還可以進行後期的功能升級。
  • Fluent UDF【4】:C語言
    所有變量都包含類型、名稱以及值,有時候還包含存儲標記(如靜態變量和外部變量)。C語言中所有的變量在使用之前都必須聲明,這樣C編譯器才會知道該如何為此變量分配內存。4.1 全局變量和局部變量C語言中的全局變量定義在函數的外部,該變量可以被源文件中所有的函數引用。全局變量如果未被聲明為靜態變量的話,還可以被外部函數引用。
  • C語言全局變量存放在哪裡?
    全局變量的作用域是從全局變量定義的位置到本源文件結束都有效。我們先看一下全局變量在反彙編中是怎麼體現的,如示例示例代碼CH07_3_4。,佔用靜態的存儲單元。說到靜態的存儲單元,這裡還要提一下全局變量分為:全局變量和靜態全局變量。全局變量的定義請看示例代碼CH07_3_4,而靜態全局變量,只是在int i = 2;前加static關鍵字。書寫形式:static int i =2;全局變量與靜態全局變量有什麼區別?
  • C語言應用筆記(二):C語言static關鍵字及其使用
    static在C語言中的三大作用:一、隱藏功能,對於static修飾的函數和全局變量而言;二、保持持久性功能,對於static修飾的局部變量而言;三、由於存放在靜態區,全局和局部的static修飾的變量,默認初始化都為0。
  • 什麼是靜態變量?它與臨時變量有什麼區別?(深入解讀)
    我最早接觸「靜態變量」的概念是在計算機C語言的編程中,清楚的記得它需要用"static"關鍵字來聲明。靜態變量(Static Variable)其實也是一種變量(Variable),因此在介紹靜態變量(Static Variable)之前,我們先來介紹下在計算機和PLC的編程中「變量(Variable)」的概念。
  • C語言(初學)函數的使用
    #C語言初學#語言程序的基本單位是函數,聽著怪奇怪的那些int,float,double等不是單位嗎?C語言程序中一塊一塊的功能就是一個一個的函數來構成的。什麼是C語言函數。它的格式是這種 :函數返回值類型 函數名 ( 參數列表 ){//函數體}比如:
  • Java中的static關鍵字和靜態變量、靜態方法
    作者: Java進階者 來源:Java進階學習交流一、static關鍵字使用static修飾的變量和方法分別稱為類變量(或稱靜態變量)和類方法(或稱靜態方法),沒有使用static修飾的變量和方法分別稱為實例變量和實例方法