程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++編程中變量的聲明和界說和預處置敕令解析

C++編程中變量的聲明和界說和預處置敕令解析

編輯:關於C++

C++編程中變量的聲明和界說和預處置敕令解析。本站提示廣大學習愛好者:(C++編程中變量的聲明和界說和預處置敕令解析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++編程中變量的聲明和界說和預處置敕令解析正文


關於C++變量的聲明和界說
我們曾經曉得,一個函數普通由兩部門構成:聲明部門和履行語句。

聲明部門的感化是對有關的標識符(如變量?函數?構造體?共用體等)的屬性停止解釋。關於函數,聲明和界說的差別是顯著的,前邊已解釋,函數的聲明是函數的原型,而函數的界說是函數功效切實其實立。對函數的聲明是可以放在聲明部門中的,而函數的界說明顯不在函數的聲明部門規模內,它是一個文件中的自力模塊。

對變量而言,聲明與界說的關系略微龐雜一些。在聲明部門湧現的變量有兩種情形:一種是須要樹立存儲空間的(如int a;);另外一種是不須要樹立存儲空間的(如extern int a;)。前者稱為界說性聲明(defining declaration),或簡稱為界說(definition)。後者稱為援用性聲明(referenceing declaration)。狹義地說,聲明包含界說,但並不是一切的聲明都是界說。對“int a;” 而言,它是界說性聲明,既可說是聲明,又可說是界說。而對“extern int a;” 而言,它是聲明而不是界說。普通為了論述便利,把樹立存儲空間的聲明稱為界說,而把不須要樹立存儲空間的聲明稱為聲明。明顯這裡指的聲明是廣義的,即非界說性聲明。例如:

int main( )
{
 extern int a; //這是聲明不是界說。聲明a是一個已界說的內部變量
}
int a; // 是界說,界說a為整型內部變量

內部變量界說和內部變量聲明的寄義是分歧的。內部變量的界說只能有一次,它的地位在一切函數以外,而統一文件中的內部變量的聲明可以有屢次,它的地位可以在函數以內,也能夠在函數以外。體系依據內部變量的界說分派存儲單位。對內部變量的初始化只能在界說時停止,而不克不及在聲明中停止。所謂聲明,其感化是向編譯體系收回一個信息,聲明該變量是一個在前面界說的內部變量,僅僅是為了提早援用該變量而作的聲明。extern只用出聲明,而不消於界說。

用static來聲明一個變量的感化有二:
對部分變量用static聲明,使該變量在本函數挪用停止後不釋放,全部法式履行時代一直存在,使其存儲期為法式的全進程。
全局變量用static聲明,則該變量的感化域只限於本文件模塊(即被聲明的文件中)。

請留意,用auto,register,static聲明變量時,是在界說變量的基本上加上這些症結字,而不克不及零丁應用。如“static a;”是不正當的,應寫成“static int a;”。

C++預處置敕令
可以在C++源法式中參加一些“預處置敕令”(preprocessor directives),以改良法式設計情況,進步編程效力。預處置敕令是C++同一劃定的,然則它不是C++說話自己的構成部門,不克不及直接對它們停止編譯(由於編譯法式不克不及辨認它們)。

如今應用的C++編譯體系都包含了預處置、編譯和銜接等部門,是以很多用戶誤以為預處置敕令是C++說話的一部門,乃至認為它們是C++語句,這是纰謬的。必需准確差別預處置敕令和C++語句,差別預處置和編譯,能力准確應用預處置敕令。C++與其他高等說話的一個主要差別是可使用預處置敕令和具有預處置的功效。

C++供給的預處置功效重要有以下3種:

  1. 宏界說
  2. 文件包括
  3. 前提編譯
  4. 分離用宏界說敕令、文件包括敕令、前提編譯敕令來完成。為了與普通C++語句相差別,這些敕令以符號“#”開首,並且末尾不包括分號。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved