變數定義就是告訴編譯器在何處建立變數的儲存,以及如何建立變數的儲存。變數定義指定乙個資料型別,幷包含了該型別的乙個或多個變數的列表,如下所示:
type variable_list;
在這裡,type 必須是乙個有效的 c 資料型別,可以是 char、w_char、int、float、double、bool 或任何使用者自定義的物件,variable_list 可以由乙個或多個識別符號名稱組成,多個識別符號之間用逗號分隔。
變數宣告向編譯器保證變數以給定的型別和名稱存在,這樣編譯器在不需要知道變數完整細節的情況下也能繼續進一步的編譯。變數宣告只在編譯時有它的意義,在程式連線時編譯器需要實際的變數定義。
注意:在程式中可以多次宣告乙個變數,但變數只能在某個檔案、函式或**塊中被定義一次。
整型宣告時,若至少有乙個其它的說明符,int可以省略,如下面的定義是等價的:
unsigned shortinta;
unsigned
short a;
signed一般只用於修飾char,其它型別在預設的情況下預設帶符號。
下面的定義都是等價的:
short; signed short;shortint;signed short
int;
int; signed int
; signed;
long;signed long;long
int;signed long
int;
unsigned
short; unsigned short
int;
unsigned
int;unsigned;
unsigned
long;unsigned long
int;
變數的初始化指的是給變數賦乙個值。
c 中有兩種型別的表示式:
左值(lvalue):指向記憶體位置的表示式被稱為左值(lvalue)表示式。左值可以出現在賦值號的左邊或右邊。
右值(rvalue):術語右值(rvalue)指的是儲存在記憶體中某些位址的數值。右值是不能對其進行賦值的表示式,也就是說,右值可以出現在賦值號的右邊,但不能出現在賦值號的左邊。
變數是左值,因此可以出現在賦值號的左邊。數值型的字面值是右值,因此不能被賦值,不能出現在賦值號的左邊。下面是乙個有效的語句:
int g = 20;
但是下面這個就不是乙個有效的語句,會生成編譯時錯誤:
10 = 20;
當區域性變數被定義時,系統不會對其初始化,您必須自行對其初始化。定義全域性變數時,系統會自動對其初始化,如下所示:
資料型別
初始化預設值
int0
char
''float
0double
0pointer
null
正確地初始化變數是乙個良好的程式設計習慣,否則有時候程式可能會產生意想不到的結果,因為未初始化的變數會導致一些在記憶體位置中已經可用的垃圾值。
定義 宣告 初始化 賦值的區別
變數宣告 extern int a 只宣告一下這個變數,會在別處定義的 1變數定義 int a 說明該變數在記憶體中的位置和大小,宣告加定義 1變數初始化 int a 7 定義時給變數乙個值 1變數賦值 a 2 把變數原有的值擦除,重新給乙個值 1c 中的左值 lvalues 和右值 rvalues...
Go語言 變數的宣告 初始化等
變數基本型別 bool string int,int8,int16,int32,int64 uint,uint8,uint16,uint32,uint64,uintptr byte uint8的別名 rune int32的別名,代表乙個unicode碼 float32 float64 complex...
宣告 初始化和例項化的區別
我算是剛入門的菜鳥,今天說下宣告 初始化和例項化的區別和使用,如有不對的地方歡迎各位指正。宣告是指使用乙個物件的時候,先定義屬於哪個型別並,比如string str str是宣告 定義 了乙個string型別的物件。初始化可以理解為給宣告的物件賦值的過程。string str hello str現在...