定義與聲明

來源:互聯網
上載者:User

   C++ 程式通常由許多檔案組成。為了讓多個檔案訪問相同的變數,C++ 區分了聲明和定義。
   變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在一個程式中,變數有且僅有一個定義。
   聲明用於向程式表明變數的類型和名字。定義也是聲明:當定義變數時我們聲明了它的類型和名字。可以通過使用 extern 關鍵字聲明變數名而不定義它。
不定義變數的聲明包括對象名、物件類型和物件類型前的關鍵字 extern:
  extern int i; // declares but does not define i
  int i; // declares and defines i
   extern 聲明不是定義,也不分配儲存空間。事實上,它只是說明變數定義在程式的其他地方。程式中變數可以聲明多次,但只能定義一次。
   只有當聲明也是定義時,聲明才可以有初始化式,因為只有定義才分配儲存空間。初始化式必須要有儲存空間來進行初始化。如果聲明有初始化式,那麼它可被當作是定義,即使聲明標記為 extern:
   extern double pi = 3.1416; // definition
  雖然使用了 extern ,但是這條語句還是定義了 pi,分配並初始化了儲存空間。只有當 extern 聲明位於函數外部時,才可以含有初始化式。

因為已初始化的 extern 聲明被當作是定義,所以該變數任何隨後的定義都是錯誤的:
    extern double pi = 3.1416; // definition
    double pi; // error: redefinition of pi
同樣,隨後的含有初始化式的 extern 聲明也是錯誤的:
    extern double pi = 3.1416; // definition
    extern double pi; // ok: declaration not definition
    extern double pi = 3.1416; // error: redefinition of pi
  聲明和定義之間的區別可能看起來微不足道,但事實上卻是舉足輕重的。
   在 C++ 語言中,變數必須且僅能定義一次,而且在使用變數之前必須定義或聲明變數。
    任何在多個檔案中使用的變數都需要有與定義分離的聲明。在這種情況下,一個檔案含有變數的定義,使用該變數的其他檔案則包含該變數的聲明(而不是定義)。
總結:
1,變數在使用前就要被定義或者聲明。
2,在一個程式中,變數只能定義一次,卻可以聲明多次。
3,定義分配儲存空間,而聲明不會。

聯繫我們

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