- 相關(guān)推薦
C語言變量的定義與使用
變量的存儲(chǔ)類別決定了變量中的數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中的存儲(chǔ)位置。C語言中局部變量存放在動(dòng)態(tài)存儲(chǔ)區(qū),全局變量或者靜態(tài)變量存放在靜態(tài)存儲(chǔ)區(qū)。下面是關(guān)于C語言變量的定義與使用,歡迎參考!
如果要為單片機(jī)控制系統(tǒng)編寫出高質(zhì)量的C語言程序,合理的定義并使用變量是非常重要的。程序是用來處理數(shù)據(jù)的,而變量就是用來存儲(chǔ)數(shù)據(jù)的。每定義一個(gè)變量,編譯器就會(huì)在系統(tǒng)的RAM中分配一個(gè)物理存儲(chǔ)區(qū)域。在單片機(jī)控制系統(tǒng)中,RAM資源是非常有限的,作為單片機(jī)程序員,絕對不能隨意的定義變量,需要精打細(xì)算合理定義。為了實(shí)現(xiàn)這個(gè)目標(biāo),必須要對變量的多個(gè)特性有深刻的認(rèn)識。
變量特性:
第一、變量定義要選擇恰到好處的類型,變量的類型直接決定了它所存儲(chǔ)的數(shù)據(jù)取值范圍,這類似于我們生活中使用的各種容器,選擇合適的變量類型,不但能保證數(shù)據(jù)存儲(chǔ)安全,還能有效的節(jié)約系統(tǒng)資源;
第二、變量的作用范圍必須清楚,C語言最基本的功能單元是函數(shù),在函數(shù)內(nèi)部使用的變量是私有變量,只能在函數(shù)內(nèi)部使用。多個(gè)函數(shù)組成一個(gè)程序的功能模塊,并安置在某一個(gè)C文件中,在這些函數(shù)的頭部定義的變量是靜態(tài)變量(局部變量),這種類型的變量模塊內(nèi)部的函數(shù)都可以訪問。如果在模塊內(nèi)部聲明變量,并在該模塊的頭文件中導(dǎo)出,該類型變量就是全局變量,全局變量在整個(gè)工程中的所有函數(shù)都可以訪問;
第三、變量占用的RAM資源,私有變量是可以釋放的,靜態(tài)變量與全局變量是不可以釋放的。也就是說在程序運(yùn)行的整個(gè)過程中,私有變量占用資源可以供不同的函數(shù)重復(fù)利用,而靜態(tài)變量與全局變量是完全被占用不能重復(fù)利用的;
第四、變量可以存放常數(shù),但因?yàn)閱纹瑱C(jī)RAM資源有限,強(qiáng)烈建議不要用變量存放常量,而是在資源相對豐富的FlashROM中存放常量;
第五、局部變量與全局變量對于函數(shù)來說,訪問非常方便,但缺點(diǎn)顯而易見:訪問的函數(shù)越多,數(shù)據(jù)的安全性越低,一旦出現(xiàn)數(shù)據(jù)異常,很難排除問題。所以,請盡量減少局部變量與全局變量的使用;
第六、函數(shù)的型參個(gè)數(shù)盡量減少,這樣型參只會(huì)占用通用寄存器組來完成參數(shù)傳遞工作。如果參數(shù)過多,編譯器可能會(huì)被迫分配占用RAM資源,這樣不但參數(shù)傳遞效率變低,同時(shí)還會(huì)導(dǎo)致RAM資源浪費(fèi);
明確上述變量定義與使用特點(diǎn)后,在編寫程序的時(shí)候,一定要利用好這些特性并結(jié)合程序的特點(diǎn),靈活的使用各種類型、各種作用范圍的變量,使程序在最大限度上得到優(yōu)化,使系統(tǒng)性能提升至最優(yōu)的狀態(tài),才是我們嵌入式開發(fā)者的終極目標(biāo)!
拓展:C語言入門學(xué)習(xí)
什么人需要學(xué)習(xí)C語言?
從51JOB的統(tǒng)計(jì)數(shù)據(jù)來看,選擇C語言人才的企業(yè)多數(shù)以電子工程師、嵌入式工程師、硬件工程師、IOS工程師等為主,學(xué)歷本科以上相關(guān)專業(yè),三年以上工作經(jīng)驗(yàn),且外語水平要求至少四級以上。既然C語言學(xué)習(xí)者的就業(yè)門檻那么高,為什么還有很多人執(zhí)著的去學(xué)習(xí)C語言呢?總結(jié)而言,無外乎以下幾點(diǎn)原由:
1)C語言不是面向?qū)ο笳Z言。
因?yàn)檫@一點(diǎn),任何學(xué)習(xí)C語言的人必須學(xué)會(huì)用函數(shù)思考問題。當(dāng)你真正的去學(xué)習(xí)一門面向?qū)ο笳Z言時(shí),就會(huì)有C語言的函數(shù)學(xué)習(xí)基礎(chǔ)去對比。這會(huì)使學(xué)習(xí)面向?qū)ο缶幊谈菀桌斫夂透袠啡ぁ?/p>
2)用C編程就像進(jìn)行智力體操。
你要顧及到每一件事情,而這在很多其他語言中他會(huì)為你處理。你要管理指針,內(nèi)存分配,和內(nèi)存回收。你要明白如何處理串,還有動(dòng)態(tài)數(shù)據(jù)。在其他語言中,所有這些對你來說是隱藏的。你不知道他們?nèi)绾芜\(yùn)行,更不用說改變他們的運(yùn)行方式了。你得到了使用的便利,失卻了對程序的控制和速度。很多情況下,這是筆值得的買賣。其他的情況下就不是這樣了。
3)不同情況下你會(huì)使用不同的編程語言。
某些情況下要求使用Lisp,其他的要Java,還有別的要C++。但是C是你堅(jiān)實(shí)的基礎(chǔ)。你可能不會(huì)使用它做一些項(xiàng)目,但是它會(huì)幫助提高你的能力,熟練的用其他語言編程。
4)除了匯編語言之外,C代碼生成的程序比其他任何語言生成的程序來得更小和運(yùn)行更快。
那么為什么不學(xué)匯編語言呢?匯編是一門學(xué)了很有用的語言,但是它沒有C那樣的可移植性,并且其他流行的語言比如JAVA的語法是基于C的,而不是匯編。你仍然應(yīng)該學(xué)匯編,但它并不會(huì)證明它會(huì)像學(xué)C那樣有用。
5)如果你想要寫一個(gè)視頻游戲引擎或操作系統(tǒng),你會(huì)需要C。
你不能使用C#, Java, 或 Basic來完成這些編程任務(wù)。
C語言的發(fā)展史:
C語言是一種計(jì)算機(jī)程序設(shè)計(jì)語言,它既具有高級語言的特點(diǎn),又具有匯編語言的特點(diǎn)。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計(jì)語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強(qiáng)的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動(dòng)畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。
我適合學(xué)習(xí)C語言嗎?
首先我們要認(rèn)清一個(gè)事實(shí):C語言工作者只是眾多從事軟件開發(fā)者中的一小部分,在深圳這樣一個(gè)IT企業(yè)云集的大城市,使用其它語言從事軟件開發(fā)的工作者多如牛毛,薪資待遇不比從事C語言開發(fā)的人低,當(dāng)編程愛好者在選擇第一個(gè)編程語言時(shí),C語言不一定是首先。我適合學(xué)習(xí)C語言嗎?解決這個(gè)問題,先回答以下幾個(gè)問題:
1)你學(xué)習(xí)C語言的目的是什么?如果是想從事這方面的工作,那么請義無反顧的堅(jiān)持下去,推薦你在《微機(jī)原理》、《計(jì)算機(jī)組成原理》和《計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)》三本書中選一本配合《C語言程序設(shè)計(jì)》來看,這樣可以融匯貫通,讓你對編程有更深入更系統(tǒng)化的理解。而這種理解對計(jì)算機(jī)類學(xué)科的學(xué)習(xí)來說很重要。
2)您具備學(xué)習(xí)C語言的條件嗎?由于入職C語言編程的企業(yè)對入職者的要求比較高,在沒有編程工作經(jīng)驗(yàn)前提下多數(shù)想通過自學(xué)進(jìn)入類似企業(yè)的人幾乎為零,包括很多計(jì)算機(jī)專業(yè)畢業(yè)的大、中專畢業(yè)生在校期間都會(huì)學(xué)到C語言,畢業(yè)出來后依然云里霧里。C語言的開發(fā),需要在實(shí)際工作中才能快速掌握。同時(shí),英語(從事C語言開發(fā)需要經(jīng)常查閱英文資料,尤其是單片機(jī)領(lǐng)域)、學(xué)歷、數(shù)學(xué)算法、極強(qiáng)的邏輯思維能力等等也是讓多數(shù)人望而卻步的門檻。
【C語言變量的定義與使用】相關(guān)文章:
C語言宏定義07-01
C語言中的相關(guān)變量知識10-25
C語言的宏定義分析09-10
C語言預(yù)定義宏用法10-06
C語言if語句的使用06-30
C語言for循環(huán)的使用10-24
C 語言中宏的使用08-02
C語言socket編程使用方法06-20