在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C/ 存儲(chǔ)類型
動(dòng)態(tài)內(nèi)存
類和對(duì)象
接口 (抽象類)
結(jié)構(gòu)體
循環(huán)的類型
函數(shù)
數(shù)字
日期和時(shí)間
基本語法
多態(tài)
數(shù)據(jù)抽象
注釋
命名空間
字符串
預(yù)處理器
決策語句
修飾符的類型
鍙橀噺綾誨瀷
基本輸入輸出
操作符
數(shù)組
模板
多線程
繼承
Web 編程
信號(hào)處理
指針
存儲(chǔ)類型
概述
引用
常量
異常處理
開發(fā)環(huán)境
重載
變量作用域
數(shù)據(jù)類型
數(shù)據(jù)封裝
文件和流

存儲(chǔ)類型

存儲(chǔ)類型定義了變量或函數(shù)的作用范圍及生命周期。這些說明符也聲明了他們的修改方式的類型。有如下幾種存儲(chǔ)類型:

  1. auto
  2. register
  3. static
  4. extern
  5. mutable

auto 存儲(chǔ)類型

auto存儲(chǔ)類型是所有局部變量的默認(rèn)存儲(chǔ)類型。

    {
       int mount;
       auto int month;
    }

上面的例子中定義了兩個(gè)相同存儲(chǔ)類型的變量,auto 僅能運(yùn)用于函數(shù)內(nèi)的局部變量。

register 存儲(chǔ)類型

register 存儲(chǔ)類型用于定義存儲(chǔ)于寄存器中的變量而不是內(nèi)存中。這意味著該變量的最大尺寸將是寄存器的大?。ㄍǔJ且粋€(gè)字),并且不能使用 '&' 尋址運(yùn)算符進(jìn)行操作(因?yàn)樗鼪]有內(nèi)存地址)。

    {
       register int  miles;
    }

register類型應(yīng)該僅應(yīng)用于需要快速訪問的變量,比如計(jì)數(shù)器。需要注意的是,定義 register 類型的變量并不意味著該變量一定就存儲(chǔ)在寄存器中,這僅僅意味著需要按照硬件以及具體實(shí)現(xiàn)的限制來判定到底是不是存儲(chǔ)在寄存器中。

static 存儲(chǔ)類型

static 存儲(chǔ)類型的變量意味著該變量將會(huì)從始至終地存活在程序的整個(gè)生命周期內(nèi),而不會(huì)隨著每次訪問到它所在的代碼塊時(shí)就建立該變量,離開代碼塊時(shí)就銷毀該變量。因此,局部變量靜態(tài)化可以使他們?cè)诤瘮?shù)調(diào)用時(shí)仍保有其值。

static 修飾符也可以應(yīng)用于全局變量。 當(dāng)全局變量使用該修飾符后, 該全局變量就被限制在其聲明的文件內(nèi)。

在 C++中,當(dāng) static 應(yīng)用于類的數(shù)據(jù)成員時(shí),它所起到的作用是多個(gè)該類的成員變量都是指的同一個(gè)變量。

    #include <iostream>

    // Function declaration
    void func(void);

    static int count = 10; /* Global variable */

    main()
    {
    while(count--)
    {
       func();
    }
    return 0;
    }
    // Function definition
    void func( void )
    {
    static int i = 5; // local static variable
    i++;
    std::cout << "i is " << i ;
    std::cout << " and count is " << count << std::endl;
    }

當(dāng)上述代碼被編譯后執(zhí)行,其結(jié)果如下:

    i is 6 and count is 9
    i is 7 and count is 8
    i is 8 and count is 7
    i is 9 and count is 6
    i is 10 and count is 5
    i is 11 and count is 4
    i is 12 and count is 3
    i is 13 and count is 2
    i is 14 and count is 1
    i is 15 and count is 0

extern 存儲(chǔ)類型

extern 存儲(chǔ)類型用于使全局變量的引用對(duì)所有程序文件可見。如果前面已經(jīng)定義了一個(gè)變量名,那么就不能再使用 extern 來聲明同一變量名的變量了。

當(dāng)你有多個(gè)程序文件且需要定義一個(gè)可以在其他文件用可以訪問到的變量或函數(shù)時(shí),就可以在其他文件中使用 extern 聲明該變量或函數(shù)的引用。

extern 修飾符通常被應(yīng)用于多個(gè)文件中需要共享相同的全局變量或函數(shù)的情況。一個(gè)例子如下:

第一個(gè)文件:main.CPP

    #include <iostream>

    int count ;
    extern void write_extern();

    main()
    {
       count = 5;
       write_extern();
    }

第二個(gè)文件:support.cpp

    #include <iostream>

    extern int count;

    void write_extern(void)
    {
       std::cout << "Count is " << count << std::endl;
    }

這里的 extern 關(guān)鍵用于聲明 count 變量已經(jīng)在其他文件中定義了。按照下面的方式來編譯:

    $g++ main.cpp support.cpp -o write

這樣會(huì)生出一個(gè) write 可執(zhí)行文件,運(yùn)行它并看他的結(jié)果:

    $./write
    5

mutable 存儲(chǔ)類型

mutable 修飾符應(yīng)用于類對(duì)象,將會(huì)在后續(xù)章節(jié)中詳細(xì)討論。它允許對(duì)象的成員可以覆蓋常量。也即是說,mutable 成員可以被 const 成員函數(shù)所修改。

上一篇:模板下一篇:數(shù)據(jù)封裝