Ⅰ C++中如何定義變數
簡單說:你要定義一個整形變數就是直接「類型 變數名;」就行。例如定一個叫做a的整形變數
「int a;」
詳細說明:
在C++中,變數聲明(declaration)只有在使用extern關鍵字時才成立,其他情況下都是定義(definition),而在使用extern的同時給變數賦初始值,則聲明變為定義,extern關鍵字也將被編譯器忽略。C++變數的作用域預設情況下是全局的,也就是對多個源文件可見,比如說,如果在a.cpp和b.cpp中都有
int a;
則編譯器鏈接兩個文件時會報告錯誤,「變數重復定義」。因此,要使變數定義只對該源文件可見,就要顯式加上static關鍵字。因此,我們可以想到,如果在a.cpp中有
extern int a;
而在b.cpp中有
static int a = 9;
那麼,編譯器鏈接時會給出錯誤信息,「找不到a的定義」,因為a的定義在b.cpp並只對該文件可見,a.cpp找不到a的定義因此出錯。
變數的聲明和定義是比較容易混淆的概念,因此記住一點,除非有extern關鍵字,否則都是變數的定義。由此,我們可以歸納出幾點好的程序設計風格:
1. 不要把變數定義放入.h文件,這樣容易導致重復定義錯誤。
2. 盡量使用static關鍵字把變數定義限制於該源文件作用域內,除非該變數被設計成全局的。
例外情況是const變數和typedef類型,在《The C++ Programming Language》9.2節中說到,const和typedef預設作用域是局部的,因此不需要static來顯式聲明。因此,在.h文件中放置const變數定義不會產生問題,編譯器會給每個引用該.h文件的源文件產生一份該const變數的局部定義,就像該變數是定義於該源文件中一樣。大家也不用太擔心編譯器這么做會浪費空間,因為編譯器優化過程一般會把有相同值的const變數進行合並。
對於static關鍵字,要多說幾句的是,static一般有兩種意思,當修飾函數定義里的變數或者類成員變數時,稱作靜態變數;修飾其他變數時,稱作局部變數。為防止混淆,一般不要特意給局部變數加上static關鍵字。除了static關鍵字,namespace也可以使變數定義成為局部的。
Ⅱ 問一下各位,c語言編譯器是如何處理變數名的呢
編譯器編譯到int a;時就在內存中開辟一個兩位元組的內存空間,並且命名為a
Ⅲ C語言中如何定義全局變數
1、首先,我們可以在函數外面定義變數,就是全局變數。