<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言

    C語言中變量儲存的類別

    時間:2025-05-26 23:48:11 C語言 我要投稿
    • 相關推薦

    C語言中變量儲存的類別

      C語言根據變量的生存周期來劃分,可以劃分為靜態存儲方式和動態存儲方式。

      C語言中變量儲存的類別

      靜態存儲方式:是指在程序的運行期間分配固定的存儲空間的方式。靜態存儲區中存儲放了在整個程序執行過程中都存在的變量,如全局變量

      動態存儲方式:是指在程序運行期間根據需要進行動態的分配存儲空間的方式。動態存儲區中存放的變量是根據程序運行需要而進行的需要而建立和釋放的`。通常包括: 1. 函數形式參數;2. 自動變量;3. 函數調用時的現場保護、4. 和返回值地址等。

      C語言中的存儲類別又分為4類:

      自動(auto)、

      靜態(static)、

      動態(extern)

      寄存器(register)

      1、 用關鍵字auto定義的變量為自動變量,auto可以省略,auto不寫則隱含定為”自動存儲類別“,屬于動態存儲方式。

    1
    2
    3
    4
    5
    int fn(int a)//定義f函數,a為參數        
    {        
    //定義b,c為自動變量        
        auto  int b,c;        
    }        

      2、用static修飾的為靜態變量,如果定義在函數內部,稱之為靜態局部變量;如果定義在函數外部,稱之為靜態外部變量,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <stdio.h>        
     
    void fn()        
    {        
        static int x =0;        
        x++;        
        printf("fn: x=%d ",x);        
    }        
    int main()        
    {        
        int i;        
        for(i=0;j<10;i++)        
        {        
            fn();        
        }        
        return 0;        
    }</stdio.h>        

      注意:

      靜態局部變量屬于靜態存儲類別,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放;

      靜態局部變量在編譯時賦初值,即只賦初值一次;如果在定義局部變量時,不賦初值的話,則對靜態局部變量來說,編譯時自動賦初值0.(對數值型變量)或空字符(對字符變量)。

      3、為了提高效率,C語言允許將局部變量得值放在CPU中的寄存器中,這種變量叫”寄存器變量“,用關鍵字register做聲明

    1
    2
    3
    4
    void fn()        
    {        
        register int i;        
    }        

      注意:只有局部自動變量和形式參數可以作為寄存器變量;一個計算機系統中的寄存器數目有限,不能定義任意多個寄存器變量

      局部靜態變量不能定義為寄存器變量。

      4、用extern聲明的變量是外部變量,外部變量的意義是某函數可以調用在該函數之后定義的變量

    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>        
    int main()        
    {        
        extern int x;//這里聲明的是外部局部變量        
        printf("extern x=%d ",x);        
    }        
    int x=100;</stdio.h>        

      任務:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>        
    void fn()        
    {        
        static int x = 1;        
        x *= 2;        
        printf("x=%d ",x);        
    }        
    int main()        
    {        
        int i;        
        for(i=0;i<5;i++)        
        {        
            fn();        
        }        
        extern int x;        
        printf("x=%d ",x);        
        return 0;        
    }        
    int x = 100;</stdio.h>        

      運行結果是x=2;x=4;x=8;x=16;x=32;x=100

    【C語言中變量儲存的類別】相關文章:

    c語言中什么是變量06-05

    C語言中的相關變量知識05-11

    c語言中什么是靜態變量02-02

    c語言中使用環境變量的技巧07-13

    C語言中根據成員變量來排序的方法04-13

    C語言變量存儲類別和內存四區04-15

    C語言中指針變量作為函數參數詳解07-01

    C語言中判斷int、long型等變量是否賦值的方法06-10

    JAVA語言中的實例變量06-01

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人