菜鳥問與答(變量和數(shù)據(jù)存儲(chǔ))

字號(hào):

1、變量有哪些存儲(chǔ)類型?
    變量的存儲(chǔ)類型由“存儲(chǔ)類型指明符”來說明。存儲(chǔ)類型指明符可以是下列類鍵字之一:
    auto
    register
    extern
    static
    下面是詳細(xì)的解釋:
    auto 存儲(chǔ)類指明符--用于說明具有局部作用域的變量,它表示變量具有局部(自動(dòng))生成期,但由于它是所有局部作用域變量說明的缺省存儲(chǔ)類指明符,所以使用得很少。要注意的是,所有在函數(shù)內(nèi)部定義的變量都是局部變量,函數(shù)內(nèi)部定義的變量其作用域只在函數(shù)內(nèi)部。它的生存期為該函數(shù)運(yùn)行期間,一旦離開這個(gè)函數(shù)或這個(gè)函數(shù)終止,局部變量也隨之消失。
    register 存儲(chǔ)類指明符--當(dāng)聲明了這個(gè)指明符后,編譯程序?qū)⒈M可能地為該變量分配CPU內(nèi)部的寄存器作為變量的存儲(chǔ)單元,以加快運(yùn)行速度。注意,寄存器與存儲(chǔ)器是不同的。寄存器一般在CPU內(nèi)部,而存儲(chǔ)器一般指外部的(比如內(nèi)存條),CPU內(nèi)部的寄存器其運(yùn)算速度是很高的。當(dāng)寄存器已分配完畢,就自動(dòng)地分配一個(gè)外部的內(nèi)存。它的作用等價(jià)于auto,也只能用于局部變量和函數(shù)的參量說明。 來源:www.examda.com   
    static 存儲(chǔ)類指明符--表示變量具有靜態(tài)生成期。static變量的的特點(diǎn)是它離開了其作用域后,其值不會(huì)消失。
    當(dāng)回到該作用域之后又可以繼續(xù)使用這個(gè)static變量的值。
    例:利用static變量統(tǒng)計(jì)調(diào)用函數(shù)的次數(shù)
    int two(); /*函數(shù)原型說明*/
    void main()
    {
    int a=0;
    a=two(); /*a的值等于1*/
    a=two() /*a的值等于2*/
    a=two(); /*a的值等于3*/
    }
    int two()
    {
    static int b=0;    /*定義了一個(gè)局部的static變量*/
    b++;
    return b;
    }
    如果不是一個(gè)static變量就不會(huì)有這個(gè)效果了
    int two(); /*函數(shù)原型說明*/
    void main()
    {
    int a=0;
    a=two(); /*a的值等于1*/
    a=two() /*a的值等于1*/
    a=two(); /*a的值等于1*/
    }
    int two()
    {
    int b=0;    
    b++;
    return b;
    }
    變量a的值總是1,原因是在函數(shù)two()中,變量b不是一個(gè)static變量,其值隨著離開two函數(shù)就消失了,當(dāng)回到two函數(shù)時(shí)又被重新賦值0。