C語言的儲存類型和關鍵字extern、static

來源:互聯網
上載者:User

標籤:函數   關鍵字   stat   範圍   說明   int   log   一個   static   

1、C語言中每個變數都有3個性質:儲存期限、範圍、連結

1)儲存期限:變數的儲存期限決定了為變數預留的記憶體被釋放的時間。共2種,自動儲存期限(auto),靜態儲存期限(static),自動儲存(auto)的變數在所屬塊被執行時獲得記憶體單元,並在塊終止時釋放記憶體單元,自動的獲得或釋放記憶體,故名auto。具有靜態儲存的變數(static)在程式運行期間始終佔有同一記憶體單元,靜止不變,故名static。

2)範圍:變數的範圍指可以使用該變數的那一部分程式文本。共2種,塊範圍指從聲明位置到所在塊的末尾均可見,檔案範圍指從聲明的地方到檔案的末尾均可見。

3)連結:變數的連結指程式的不同部分可以共用此變數。共3種,外部連結指可以被程式中不同檔案分享權限設定,內部連結指只屬於單獨一個檔案,無連結指屬於單獨一個函數,而且根本不能被共用。

2、變數的預設儲存期限、範圍、連結均依賴於變數的聲明位置。

1)在塊內聲明的變數:自動儲存期限、塊範圍、無連結。

2)在程式最外層(任意塊外部)聲明的變數:靜態儲存期限、檔案範圍、外部連結。

int i;  //靜態儲存,檔案範圍,外部連結void f(void){    INT J;   //自動儲存,塊範圍,無連結}

3、static的特殊用途:

1)當在塊外部,static說明變數為內部連結,注意:本來在塊外部聲明的變數具有外部連結,加上static後,變為內部連結,則外部不可見了。

2)當在塊內部,static說明變數的儲存期限為靜態,注意:本來在塊內部變數為自動儲存期限。

static int i;   //靜態儲存期限,檔案範圍,內部連結void f(void){    static int j;     //靜態儲存,塊範圍,無連結}

 

C語言的儲存類型和關鍵字extern、static

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.