c語(yǔ)言中什么是變量
c語(yǔ)言中什么是變量
大家在初學(xué)C語(yǔ)言的時(shí)候?qū)Ω鞣N變量之間的區(qū)別以及存儲(chǔ)布局可能都有很多疑問(wèn),造成在使用變量的時(shí)候可能會(huì)遇到錯(cuò)誤的地方。下面是應(yīng)屆畢業(yè)生小編為大家整理的關(guān)于c語(yǔ)言的介紹和分類,希望可以幫到大家哦。
(資料圖片僅供參考)
c語(yǔ)言中什么是變量 篇1
c語(yǔ)言的變量特性:
第一、變量定義要選擇恰到好處的類型,變量的類型直接決定了它所存儲(chǔ)的數(shù)據(jù)取值范圍,這類似于我們生活中使用的各種容器,選擇合適的變量類型,不但能保證數(shù)據(jù)存儲(chǔ)安全,還能有效的節(jié)約系統(tǒng)資源;
第二、變量的作用范圍必須清楚,C語(yǔ)言最基本的功能單元是函數(shù),在函數(shù)內(nèi)部使用的變量是私有變量,只能在函數(shù)內(nèi)部使用。多個(gè)函數(shù)組成一個(gè)程序的功能模塊,并安置在某一個(gè)C文件中,在這些函數(shù)的頭部定義的變量是靜態(tài)變量(局部變量),這種類型的變量模塊內(nèi)部的函數(shù)都可以訪問(wèn)。如果在模塊內(nèi)部聲明變量,并在該模塊的頭文件中導(dǎo)出,該類型變量就是全局變量,全局變量在整個(gè)工程中的所有函數(shù)都可以訪問(wèn);
第三、變量占用的RAM資源,私有變量是可以釋放的,靜態(tài)變量與全局變量是不可以釋放的。也就是說(shuō)在程序運(yùn)行的整個(gè)過(guò)程中,私有變量占用資源可以供不同的函數(shù)重復(fù)利用,而靜態(tài)變量與全局變量是完全被占用不能重復(fù)利用的;
第四、變量可以存放常數(shù),但因?yàn)閱纹瑱C(jī)RAM資源有限,強(qiáng)烈建議不要用變量存放常量,而是在資源相對(duì)豐富的Flash ROM中存放常量;
第五、局部變量與全局變量對(duì)于函數(shù)來(lái)說(shuō),訪問(wèn)非常方便,但缺點(diǎn)顯而易見(jiàn):訪問(wèn)的函數(shù)越多,數(shù)據(jù)的安全性越低,一旦出現(xiàn)數(shù)據(jù)異常,很難排除問(wèn)題。所以,請(qǐng)盡量減少局部變量與全局變量的使用;
第六、函數(shù)的型參個(gè)數(shù)盡量減少,這樣型參只會(huì)占用通用寄存器組來(lái)完成參數(shù)傳遞工作。如果參數(shù)過(guò)多,編譯器可能會(huì)被迫分配占用RAM資源,這樣不但參數(shù)傳遞效率變低,同時(shí)還會(huì)導(dǎo)致RAM資源浪費(fèi);
c語(yǔ)言變量的分類
全局變量的作用范圍是整個(gè)程序(如果程序是多個(gè)文件,必須在其他的文件中說(shuō)明)。
靜態(tài)變量的作用范圍要看靜態(tài)變量的位置,如果在函數(shù)里,則作用范圍就是這個(gè)函數(shù)。
靜態(tài)變量又分為靜態(tài)全局變量和靜態(tài)局部變量。
靜態(tài)全局變量,只在本文件可以用,雖然整個(gè)程序包含多個(gè)文件,但靜態(tài)全局變量只能用在定義它的那個(gè)文件里,卻不能用在程序中的其他文件里。
它是定義存儲(chǔ)因型為靜態(tài)型的外部變量,其作用域是從定義點(diǎn)到程序結(jié)束,所不同的是存儲(chǔ)類型決定了存儲(chǔ)地點(diǎn),靜態(tài)型變量是存放在內(nèi)存的數(shù)據(jù)區(qū)中的,它們?cè)诔绦蜷_(kāi)始運(yùn)行前就分配了固定的字節(jié),在程序運(yùn)行過(guò)程中被分配的字節(jié)大小是不改變的,只有程序運(yùn)行結(jié)束后,才釋放所占用的內(nèi)存。
全局變量是沒(méi)有定義存儲(chǔ)類型的外部變量,其作用域是從定義點(diǎn)到程序結(jié)束,省略了存儲(chǔ)類型符,系統(tǒng)將默認(rèn)為自動(dòng)型。
自動(dòng)型變量存放在堆棧區(qū)中,堆棧區(qū)也是內(nèi)存中一部分,該部分內(nèi)存在程序運(yùn)行中是重復(fù)使用的。
按存儲(chǔ)區(qū)域分,全局變量、靜態(tài)全局變量和靜態(tài)局部變量都存放在內(nèi)存的靜態(tài)存儲(chǔ)區(qū)域,局部變量存放在內(nèi)存的棧區(qū)。
按作用域分,全局變量在整個(gè)工程文件內(nèi)都有效;靜態(tài)全局就量只在定義它的文件內(nèi)有效;靜態(tài)局部變量只在定義它的函數(shù)內(nèi)有效,只是程序僅分配一次內(nèi)存,函數(shù)返回后,該變量不會(huì)消失;局部變量在定義它的函數(shù)內(nèi)有效,但是函數(shù)返回后失效。
全局變量和靜態(tài)變量如果沒(méi)有手工初始化,則由編譯器初始化為0。局部變量的值不可知,所以一般在定義的時(shí)候一定要賦初值。
c語(yǔ)言中什么是變量 篇2
變量要有變量名,在內(nèi)存中占據(jù)一定的存儲(chǔ)單元,存儲(chǔ)單元里存放的是該變量的值。不同類型的變量其存儲(chǔ)單元的大小不同,變量在使用前必須定義。那么C語(yǔ)言變量的類型有哪些呢,一起來(lái)看看!
(一)整型變量
整型變量分為4種:基本型(int)、短整型(short int 或short)、長(zhǎng)整型(long int 或 long)和無(wú)符號(hào)型(unsigned int ,unsigned short,unsigned long)。
不同的編譯系統(tǒng)對(duì)上述四種整型數(shù)據(jù)所占用的位數(shù)和數(shù)值范圍有不同的規(guī)定。
類型說(shuō)明符
說(shuō)明:
單詞signed來(lái)說(shuō)明“有符號(hào)”(即有正負(fù)數(shù)之分),不寫(xiě)signed也隱含說(shuō)明為有符號(hào),unsigned用來(lái)說(shuō)明“無(wú)符號(hào)”(只表示正數(shù))。
(二)實(shí)型變量
C語(yǔ)言中,實(shí)型變量分為單精度類型( float )和雙精度類型( double )兩種。如:
float a , b ;
double m ;
在vc中,float 型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位),double型數(shù)據(jù)占8個(gè)字節(jié)。單精度實(shí)數(shù)提供7位有效數(shù)字,雙精度實(shí)數(shù)提供15~16位有效數(shù)字。實(shí)型常量不分float型和double型,一個(gè)實(shí)型常量可以賦給一個(gè)float 型或double型變量,但變量根據(jù)其類型截取實(shí)型常量中相應(yīng)的有效數(shù)字。
注意:實(shí)型變量只能存放實(shí)型值,不能用整型變量存放實(shí)型值,也不能用實(shí)型變量存放整型值。
(三)字符變量
字符變量用來(lái)存放字符常量,定義形式:
char 變量名;
其中關(guān)鍵字char定義字符型數(shù)據(jù)類型,占用一個(gè)字節(jié)的存儲(chǔ)單元。
例:char cr1,cr2;
cr1= ‘A’ , cr2=‘B’ ;
將一個(gè)字符賦給一個(gè)字符變量時(shí),并不是將該字符本身存儲(chǔ)到內(nèi)存中,而是將該字符對(duì)應(yīng)的ASCII碼存儲(chǔ)到內(nèi)存單元中。例如,字符 ′A′ 的ASCII碼為65,在內(nèi)存中的存放形式如下:01000001
由于在內(nèi)存中字符以ASCII碼存放,它的存儲(chǔ)形式和整數(shù)的存儲(chǔ)形式類似,所以C語(yǔ)言中字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用,一個(gè)字符能用字符的形式輸出,也能用整數(shù)的形式輸出,字符數(shù)據(jù)也能進(jìn)行算術(shù)運(yùn)算,此時(shí)相當(dāng)于對(duì)它們的ASCII碼進(jìn)行運(yùn)算。
c語(yǔ)言中什么是變量 篇3
一、變量的概念
程序設(shè)計(jì)就是讓計(jì)算機(jī)按照一定的指令來(lái)進(jìn)行工作,可以說(shuō)數(shù)據(jù)的處理是程序設(shè)計(jì)的主要任務(wù)。那么數(shù)據(jù)是怎么加入到計(jì)算機(jī)的內(nèi)存中呢?計(jì)算機(jī)最初的功能就是能夠存儲(chǔ)數(shù)據(jù)并處理數(shù)據(jù)的機(jī)器。那么數(shù)據(jù)是怎么加入到計(jì)算機(jī)的內(nèi)存中呢?在學(xué)習(xí)程序設(shè)計(jì)之前,很多學(xué)生對(duì)計(jì)算機(jī)的硬件設(shè)施都大概已經(jīng)很熟悉了。計(jì)算機(jī)的硬件設(shè)施中有一個(gè)區(qū)域是用來(lái)存儲(chǔ)數(shù)據(jù)的,計(jì)算機(jī)在工作的過(guò)程中會(huì)頻繁的從這個(gè)區(qū)域讀入和讀出數(shù)據(jù)。要想讓計(jì)算機(jī)按照某些指令(程序)自動(dòng)工作,首先必須把數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)的存儲(chǔ)空間中。在某種計(jì)算機(jī)語(yǔ)言中實(shí)現(xiàn)這種數(shù)據(jù)存儲(chǔ)功能的就是變量。變量就是計(jì)算機(jī)內(nèi)存中的某一個(gè)存儲(chǔ)單元。
二、變量的定義
C語(yǔ)言中變量在使用之前必須先對(duì)其進(jìn)行定義,變量的定義的一般形式如下:【存儲(chǔ)類別】數(shù)據(jù)類型變量名;其中存儲(chǔ)類別是可以省略的。
1、存儲(chǔ)類別計(jì)算機(jī)的內(nèi)存一般分為三個(gè)部分:1)程序區(qū);2)靜態(tài)存儲(chǔ)區(qū);3)動(dòng)態(tài)存儲(chǔ)區(qū);為了高效的發(fā)揮計(jì)算機(jī)的功能,不同類型的變量存放在不同的內(nèi)存區(qū)域。變量的存儲(chǔ)類別決定了變量中的數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)位置。C語(yǔ)言中局部變量存放在動(dòng)態(tài)存儲(chǔ)區(qū),全局變量或者靜態(tài)變量存放在靜態(tài)存儲(chǔ)區(qū)。
2、數(shù)據(jù)類型在用程序處理問(wèn)題之前,首先必須確定用何種方式描述問(wèn)題中所涉及到的數(shù)據(jù)。這個(gè)問(wèn)題在C語(yǔ)言中是由數(shù)據(jù)類型來(lái)決定的。變量的本質(zhì)表現(xiàn)為在計(jì)算機(jī)中的存在時(shí)間和存儲(chǔ)空間。變量的數(shù)據(jù)類型是用來(lái)決定變量在計(jì)算機(jī)中占用內(nèi)存空間的大小。比如:整型數(shù)據(jù)在TC編譯系統(tǒng)中占用兩個(gè)字節(jié)的存儲(chǔ)空間。C語(yǔ)言變量的類型不僅確定了數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)區(qū)域的大小,同時(shí)確定了該數(shù)據(jù)能夠參與的各種運(yùn)算。任何一個(gè)C語(yǔ)言的變量必須有確定的數(shù)據(jù)類型,不管這個(gè)變量如何變化,變量的值都必須符合該變量數(shù)據(jù)類型的規(guī)定。
3、變量的名字通過(guò)以上介紹我們知道C語(yǔ)言中的變量就是計(jì)算機(jī)的.某個(gè)存儲(chǔ)單元,假設(shè)你給某個(gè)變量賦予了一個(gè)數(shù)值,對(duì)變量的處理其實(shí)就是對(duì)這個(gè)數(shù)據(jù)的處理。那么計(jì)算機(jī)是如何快速準(zhǔn)確的找到這個(gè)數(shù)據(jù)呢?計(jì)算機(jī)的內(nèi)存是以字節(jié)為單位進(jìn)行劃分的。每個(gè)存儲(chǔ)單元都有自己的地址編號(hào),就向賓館中房間的房間號(hào)一樣。計(jì)算機(jī)就是通過(guò)地址來(lái)準(zhǔn)確的確定數(shù)據(jù)的存儲(chǔ)位置。但是對(duì)于程序員特別是非專業(yè)計(jì)算機(jī)人士,如果用計(jì)算機(jī)內(nèi)存地址記錄數(shù)據(jù)是非常難操作的。
為了更好的掌控變量,C語(yǔ)言規(guī)定可以給每個(gè)變量其一個(gè)容易識(shí)別的名字。這個(gè)名字的命名規(guī)則遵循C語(yǔ)言的標(biāo)識(shí)符命名規(guī)則。C語(yǔ)言的變量名的命名在遵循C語(yǔ)言標(biāo)識(shí)符規(guī)則的前提下,原則上可以是任意長(zhǎng)度字符的組合。但是目前很多的C語(yǔ)言編譯系統(tǒng)只能識(shí)別前31個(gè)字符,如果兩個(gè)變量的前31個(gè)字符相同,則編譯系統(tǒng)會(huì)認(rèn)為這兩個(gè)變量時(shí)同一個(gè)變量。為了避免這種混淆的出現(xiàn)最好避免使用多余31個(gè)字符的變量名。變量的理解變量就是計(jì)算機(jī)中的某個(gè)存儲(chǔ)單元。定義某個(gè)變量本質(zhì)上就是向計(jì)算機(jī)申請(qǐng)一些存儲(chǔ)區(qū)域。這個(gè)存儲(chǔ)區(qū)域的大小由變量的數(shù)據(jù)類型決定,這個(gè)存儲(chǔ)區(qū)域的位置有變量的存儲(chǔ)類類別決定。給變量賦予某個(gè)數(shù)值,其實(shí)就是向該變量對(duì)應(yīng)的存儲(chǔ)單元讀入數(shù)據(jù),對(duì)變量的處理就是對(duì)這個(gè)存儲(chǔ)單元中的數(shù)據(jù)的處理。并且這個(gè)存儲(chǔ)單元中的數(shù)據(jù)在程序的運(yùn)行期間是可以發(fā)生變化的。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。