2.3 變量
變量是程序執(zhí)行時(shí),其值允許改變的數(shù)據(jù)對(duì)象,用來(lái)存儲(chǔ)輸入數(shù)據(jù)、計(jì)算的中間結(jié)果和程序的最終結(jié)果等。
1.變量定義
變量用標(biāo)識(shí)符命名,通過(guò)變量定義引入的變量名習(xí)慣用英文字母開(kāi)頭,C系統(tǒng)可能也會(huì)預(yù)定義一些標(biāo)記系統(tǒng)特性的變量,系統(tǒng)定義的變量習(xí)慣用下線字符開(kāi)頭。變量的數(shù)據(jù)特性由變量定義時(shí)指定的類(lèi)型確定。若定義指定數(shù)據(jù)類(lèi)型的變量(即不在指定數(shù)據(jù)類(lèi)型基礎(chǔ)上定義新數(shù)據(jù)類(lèi)型的變量,如指定類(lèi)型的指針、數(shù)組等),這種變量定義的句法為:
數(shù)據(jù)類(lèi)型符變量名1,變量名2,……;
編繹系統(tǒng)根據(jù)變量的數(shù)據(jù)類(lèi)型確定存放它的值所需要的內(nèi)存字節(jié)數(shù),變量值的內(nèi)部表示形多也由其類(lèi)型確定。
2.內(nèi)部變量和外部變量
變量按其定義出現(xiàn)在程序中的位置不同分成兩類(lèi):在函數(shù)內(nèi)定義的變量稱為內(nèi)部變量,而在函數(shù)之外(函數(shù)之間)定義的變量稱為外部變量。
3.變量的存儲(chǔ)類(lèi)型
系統(tǒng)按程序?qū)τ?jì)算機(jī)存儲(chǔ)空間使用的不同要求,將內(nèi)存分成不同用途的塊,與計(jì)算機(jī)的寄存器一起將存儲(chǔ)空間分成不同類(lèi)別。而C程序通過(guò)指定變量的存儲(chǔ)類(lèi)表明變量的不同的使用要求,讓系統(tǒng)將變量分配于不同的內(nèi)存塊或寄存器。如在上述變量定義形式中,還要指定變量的存儲(chǔ)類(lèi)型,變量定義的形式為:
存儲(chǔ)類(lèi)型符數(shù)據(jù)類(lèi)型符變量名1,變量名2,…;
其中存儲(chǔ)類(lèi)型有四種: auto(自動(dòng)的)、static(靜態(tài)的)、register寄存器的)和 extem外部的)。
外部變量只允許被指定為靜態(tài)的,或不指定其存儲(chǔ)類(lèi)型。內(nèi)部變量可以被指定為自動(dòng)的或靜態(tài)的、或寄存器的、或不指定存儲(chǔ)類(lèi)型,若不指定存儲(chǔ)類(lèi)型,它就是自動(dòng)的。
自動(dòng)變量是內(nèi)部變量,在函數(shù)內(nèi)或復(fù)合語(yǔ)句內(nèi)定義,它們被分配在堆棧區(qū)。
靜態(tài)變量可以是內(nèi)部變量,也可以是外部變量。靜態(tài)變量表示永久性和專(zhuān)用性,即在程序執(zhí)行過(guò)程中一直存在,局限于定義它的函數(shù)(內(nèi)部靜態(tài)變量)或局限于定義它的程序文件中那些函數(shù)(外部靜態(tài)變量)。靜態(tài)變量被分配在與程序相聯(lián)的內(nèi)存數(shù)據(jù)區(qū)。
寄存器變量是函數(shù)的內(nèi)部變量或參數(shù),也是一種臨時(shí)性的變量。如因函數(shù)使用非常頻繁程序希望將它分配在寄存器,程序就可將變量指定為寄存器的,但編譯系統(tǒng)也可能把它當(dāng)作動(dòng)變量處理。
指定存儲(chǔ)類(lèi)型是外部的,實(shí)際b是告訴編譯器,這個(gè)變量是一個(gè)外部變量,在這里要使它,而它的定義或在別的程序文件或在后面的程序段等別的地方。
4.變量的作用域和生存期
變量的使用要注意變量的作用域(可使用范圍)和生存期(存在的時(shí)間)。C語(yǔ)言規(guī)定,內(nèi)部變量的作用域只局限于定義它的函數(shù)或復(fù)合語(yǔ)句。自動(dòng)的內(nèi)部變量是一種臨時(shí)性變量,函數(shù)被調(diào)用時(shí)分配,函數(shù)執(zhí)行結(jié)束時(shí)釋放。而靜態(tài)變量在程序執(zhí)行前分配,直至程序結(jié)束才釋放。由于靜態(tài)的內(nèi)部變量在函數(shù)結(jié)束時(shí),依舊保持存儲(chǔ),函數(shù)上一次調(diào)用時(shí)留在內(nèi)部靜態(tài)變量中的結(jié)果能被下一次調(diào)用時(shí)繼續(xù)使用。外部變量也在程序啟動(dòng)前分配,直至程序執(zhí)行結(jié)束釋放。普通的外部變量能提供別的源程序文件中的函數(shù)使用(要對(duì)它作外部說(shuō)明);靜態(tài)的外部變量只能供定義它的源程序中的全部函數(shù)專(zhuān)用。由于外部變量能供整個(gè)程序使用,所以外部量不能重名。
5.變量定義初始化
變量定義是對(duì)變量的存儲(chǔ)空間提出一種要求,存儲(chǔ)空間分配后,變量的初值通常是不拔的。但程序可以要求系統(tǒng)在為變量分配存儲(chǔ)空間同時(shí)為變量設(shè)定初值,這就是變量定義初始化。在變量的定義形式中,在變量名之后接上“=初值表達(dá)式”,該初值表達(dá)式的值就作為該變量的初值。C語(yǔ)言另有約定,對(duì)于靜態(tài)變量和外部變量,若定義它們時(shí)未指定初值,系統(tǒng)給它們?cè)O(shè)置成全部二進(jìn)位都是0的值。以下是各種變量定義的例子:
(l)定義整型,并對(duì)其初始化。
Short minInt =100;
int i= l,j= 2, k=3;
long p=-1L,q=1234567890L;
unsigned usi= 254u;
unsigned long up= 4294967295UL;
(2)定義字符型變量,并對(duì)其初始化。
char ch=’A’;
(3)定義實(shí)型(浮點(diǎn)型、雙精度型)變量,并對(duì)其初始化。
float f=1.23456f;
double d=1.2345678op87654;
相關(guān)推薦:計(jì)算機(jī)軟考程序員備考:程序設(shè)計(jì)知識(shí)點(diǎn)(1)北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |