c語(yǔ)言什么是變量_變量的分類
c語(yǔ)言什么是變量_變量的分類
大家在初學(xué)C語(yǔ)言的時(shí)候?qū)Ω鞣N變量之間的區(qū)別以及存儲(chǔ)布局可能都有很多疑問(wèn),造成在使用變量的時(shí)候可能會(huì)遇到錯(cuò)誤的地方。下面是學(xué)習(xí)啦小編為大家整理的關(guān)于c語(yǔ)言的介紹和分類,希望可以幫到大家哦。
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)顯而易見:訪問(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è)诔绦蜷_始運(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ǔ)言什么是變量 變量的分類”的人還看了:
1.如何定義全局變量
5.2016年計(jì)算機(jī)二級(jí)公共基礎(chǔ)知識(shí)通過(guò)全國(guó)計(jì)算機(jī)二級(jí)考試是許多高...