c語言的static和extern關鍵字

來源:互聯網
上載者:User

在c語言中經常會使用static(靜態)和extern(外部的)關鍵字,但是如果使用不當可能會對程式的設計帶來麻煩,這裡作些介紹。

一、聲明或定義變數

    1、局部變數:

         用static在函數內部定義的變數是靜態局部變數,儲存在記憶體的靜態/全域區,其生命週期是整個來源程式。但是範圍與自動變數相同,只能在該函數中使用,退出函數後,此變數繼續存在,但不可使用。若不給靜態局部變數賦值,則系統自動賦值0(自動變數初值隨即)。

    2、全域變數

        全域變數預設的是extern型的,如果定義時加static則為靜態全域變數。如果不給全域變數賦初值,一般系統會自動賦值0。

      (1) extern全域變數,可以被其它源檔案中的函數調用,但是在調用它的檔案中必須用extern再次聲明此變數,或者是直接把此全域變數放在標頭檔中,在需要調用它的檔案中包含此標頭檔。

      (2)static全域變數,生命週期是整個來源程式,存放在靜態/全域區,但只能在其所在的源檔案中被使用。

二、聲明或定義函數

     1、static(靜態)函數

      靜態函數的生命週期也是整個來源程式,但範圍也是其所在的源檔案。

     2、extern型函數

     函數預設的是extern型的,其它檔案中需要調用extern型的函數時,需要在使用前用extern再聲明一下此函數,或者包含聲明過此函數的標頭檔。在.c檔案中聲明外部函數時必須使用extern關鍵字,而在標頭檔中extern關鍵字可有可無,只要在某個.c檔案中實現了就行。

     編程時,把需要在其它檔案中使用的全域變數和函數在其標頭檔中聲明,使用時包含此標頭檔,盡量不要在標頭檔中定義變數和函數。

     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.