05_變數屬性

來源:互聯網
上載者:User

標籤:row   地址   stat   關鍵字   檔案   技術分享   ble   border   情況   

變數屬性

C語言定義變數屬性的關鍵字主要有auto、register、static、extern

1、auto關鍵字

2、register關鍵字

(1)register關鍵字指明將局部變數儲存於寄存器中;
(2)register只是請求寄存器變數,並不一定能成功;
(3)register變數必須是CPU寄存器可以接受的值;
(4)不能用&運算子擷取resister變數的地址;
(5)register不能作為全域變數,因為寄存器不能被一個變數一直佔用;

3、static關鍵字


4、extern關鍵字

5、編寫代碼

(1)auto、register、static對比分析

#include <stdio.h>int f1(){    int r = 0;    r++;    return r;}int f2(){    static int r = 0;    r++;    return r;}int main(){    auto int i = 0; // 顯示聲明 auto 屬性,i 為棧變數    auto int l = 1; // 顯示聲明 auto 屬性,l 為棧變數    static int k = 0; // 局部變數 k 的儲存區位於靜態區,範圍位於 main 中    register int j = 0; // 向編譯器申請將 j 儲存於寄存器中    printf("%p\n", &i);    printf("%p\n", &l);    printf("%p\n", &k);    //printf("%p\n", &j); // error    for(i=0; i<5; i++)    {        printf("%d\n", f1());    }    for(i=0; i<5; i++)    {        printf("%d\n", f2());    }    return 0;}

輸出結果為:

(2)static和extern的使用

#include <stdio.h>extern int g_i;int main(void){    printf("%d\n",g_i);    return 0;}int g_i;

輸出結果為:0
若把int g_i屏蔽,則

#include <stdio.h>extern int g_i;int main(void){    printf("%d\n",g_i);    return 0;}//int g_i;

輸出結果為:

同樣的道理,當其他檔案裡的變數被static修飾了,extern關鍵字失去作用;
1.c

#include <stdio.h>extern int g_i;int main(void){    printf("%d\n",g_i);    return 0;}

2.c

static int g_i;

輸出結果同樣會報錯

若代碼改為一下情況,則不會報錯;
1.c

#include <stdio.h>extern int getI();int main(){    printf("%d\n", getI());    return 0;}

2.c

static int g_i;int getI(){    return g_i;}

輸出結果為:0

6、小結

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

    



來自為知筆記(Wiz)



05_變數屬性

聯繫我們

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