c語言里變數
❶ c語言變數的定義與使用
變數的存儲類別決定了變數中的數據在計算機內存中的存儲位置。C語言中局部變數存放在動態存儲區,全局變數或者靜態變數存放在靜態存儲區。下面是關於C語言變數的定義與使用,歡迎參考!
如果要為單片機控制系統編寫出高質量的C語言程序,合理的定義並使用變數是非常重要的。程序是用來處理數據的,而變數就是用來存儲數據的。每定義一個變數,編譯器就會在系統的RAM中分配一個物理存儲區域。在單片機控制系統中,RAM資源是非常有限的,作為單片機程序員,絕對不能隨意的定義變數,需要精打細算合理定義。為了實現這個目標,必須要對變數的多個特性有深刻的認識。
變數特性:
第一、變數定義要選擇恰到好處的類型,變數的類型直接決定了它所存儲的數據取值范圍,這類似於我們生活中使用的各種容器,選擇合適的變數類型,不但能保證數據存儲安全,還能有效的節約系統資源;
第二、變數的作用范圍必須清楚,C語言最基本的功能單元是函數,在函數內部使用的變數是私有變數,只能在函數內部使用。多個函數組成一個程序的功能模塊,並安置在某一個C文件中,在這些函數的頭部定義的變數是靜態變數(局部變數),這種類型的變數模塊內部的函數都可以訪問。如果在模塊內部聲明變數,並在該模塊的頭文件中導出,該類型變數就是全局變數,全局變數在整個工程中的所有函數都可以訪問;
第三、變數佔用的RAM資源,私有變數是可以釋放的,靜態變數與全局變數是不可以釋放的。也就是說在程序運行的整個過程中,私有變數佔用資源可以供不同的函數重復利用,而靜態變數與全局變數是完全被佔用不能重復利用的;
第四、變數可以存放常數,但因為單片機RAM資源有限,強烈建議不要用變數存放常量,而是在資源相對豐富的FlashROM中存放常量;
第五、局部變數與全局變數對於函數來說,訪問非常方便,但缺點顯而易見:訪問的函數越多,數據的安全性越低,一旦出現數據異常,很難排除問題。所以,請盡量減少局部變數與全局變數的使用;
第六、函數的型參個數盡量減少,這樣型參只會佔用通用寄存器組來完成參數傳遞工作。如果參數過多,編譯器可能會被迫分配佔用RAM資源,這樣不但參數傳遞效率變低,同時還會導致RAM資源浪費;
明確上述變數定義與使用特點後,在編寫程序的時候,一定要利用好這些特性並結合程序的特點,靈活的使用各種類型、各種作用范圍的變數,使程序在最大限度上得到優化,使系統性能提升至最優的狀態,才是我們嵌入式開發者的終極目標!
拓展:C語言入門學習
什麼人需要學習C語言?
從51JOB的統計數據來看,選擇C語言人才的企業多數以電子工程師、嵌入式工程師、硬體工程師、IOS工程師等為主,學歷本科以上相關專業,三年以上工作經驗,且外語水平要求至少四級以上。既然C語言學習者的就業門檻那麼高,為什麼還有很多人執著的去學習C語言呢?總結而言,無外乎以下幾點原由:
1)C語言不是面向對象語言。
因為這一點,任何學習C語言的人必須學會用函數思考問題。當你真正的去學習一門面向對象語言時,就會有C語言的函數學習基礎去對比。這會使學習面向對象編程更容易理解和更有樂趣。
2)用C編程就像進行智力體操。
你要顧及到每一件事情,而這在很多其他語言中他會為你處理。你要管理指針,內存分配,和內存回收。你要明白如何處理串,還有動態數據。在其他語言中,所有這些對你來說是隱藏的。你不知道他們如何運行,更不用說改變他們的運行方式了。你得到了使用的便利,失卻了對程序的控制和速度。很多情況下,這是筆值得的買賣。其他的情況下就不是這樣了。
3)不同情況下你會使用不同的編程語言。
某些情況下要求使用Lisp,其他的要Java,還有別的要C++。但是C是你堅實的基礎。你可能不會使用它做一些項目,但是它會幫助提高你的能力,熟練的用其他語言編程。
4)除了匯編語言之外,C代碼生成的程序比其他任何語言生成的程序來得更小和運行更快。
那麼為什麼不學匯編語言呢?匯編是一門學了很有用的.語言,但是它沒有C那樣的可移植性,並且其他流行的語言比如JAVA的語法是基於C的,而不是匯編。你仍然應該學匯編,但它並不會證明它會像學C那樣有用。
5)如果你想要寫一個視頻游戲引擎或操作系統,你會需要C。
你不能使用C#, Java, 或 Basic來完成這些編程任務。
C語言的發展史:
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
我適合學習C語言嗎?
首先我們要認清一個事實:C語言工作者只是眾多從事軟體開發者中的一小部分,在深圳這樣一個IT企業雲集的大城市,使用其它語言從事軟體開發的工作者多如牛毛,薪資待遇不比從事C語言開發的人低,當編程愛好者在選擇第一個編程語言時,C語言不一定是首先。我適合學習C語言嗎?解決這個問題,先回答以下幾個問題:
1)你學習C語言的目的是什麼?如果是想從事這方面的工作,那麼請義無反顧的堅持下去,推薦你在《微機原理》、《計算機組成原理》和《計算機系統結構》三本書中選一本配合《C語言程序設計》來看,這樣可以融匯貫通,讓你對編程有更深入更系統化的理解。而這種理解對計算機類學科的學習來說很重要。
2)您具備學習C語言的條件嗎?由於入職C語言編程的企業對入職者的要求比較高,在沒有編程工作經驗前提下多數想通過自學進入類似企業的人幾乎為零,包括很多計算機專業畢業的大、中專畢業生在校期間都會學到C語言,畢業出來後依然雲里霧里。C語言的開發,需要在實際工作中才能快速掌握。同時,英語(從事C語言開發需要經常查閱英文資料,尤其是單片機領域)、學歷、數學演算法、極強的邏輯思維能力等等也是讓多數人望而卻步的門檻。
❷ C語言中,變數到底是個什麼概念
C語言中的變數是指在程序運行時其值可以改變的量,變數的功能就是存儲數據。每個變數都有特定的類型,類型決定了變數存儲的大小和布局,該范圍內的值都可以存儲在內存中,運算符可應用於變數上。
變數來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變數可以通過變數名訪問。在指令式語言中,變數通常是可變的;但在純函數式語言(如Haskell)中,變數可能是不可變(immutable)的。
(2)c語言里變數擴展閱讀
常量與變數
常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
變數的聲明有兩種情況:
1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經建立了存儲空間。
2、另一種是不需要建立存儲空間的,通過使用extern關鍵字聲明變數名而不定義它。 例如:extern int a 其中變數 a 可以在別的文件中定義的。
❸ C語言變數的基本類型有哪些
c語言的變數有三種類型:char,int,float,double
其中char為字元類型的變數是八位的,最前一位作為符號位,後面七位作為數據位.它的存儲范圍在-128到127之間.
int整數類型的變數是16位的,最前一位為符號位,後面的15位作為數據位.它的存儲范圍在-215到215-1.也就是-32768到32767.它不包擴小數點以後的數,在一般編譯器中給int類型賦予帶有小數的數.編譯器會自動去掉小數點後面的數保留整數部分.
float為浮點數類型.首先要說明的是浮點數有兩部分組成,第一部分是指數,也就是多少次冪嘛.第二部分是由尾數組成也就是一個數科學表示發之後除去冪那部分剩下的(呵呵!!!)如1.33333.那麼c中的浮點數就有三部分.32位的浮點數第一位就是第一部分它決定數的符號.第二部分是八位的指數.第三部分是23位的尾數.所以浮點數具有6到7位的存儲精確度.范圍為3.4e-38到3.4e+38的數值.注:3.1415926e+7表示3.1415926.0.在給浮點數賦值的時候可以採用如下方法.123.45和1.2345e2是等價的.
double為雙精度型變數.c編譯器通常用64位來存儲雙精度性變數.它的精確度能夠達到14到15位.64位中第一位是符號位.後面的11位是指數位.最後的52位是尾數.它的范圍是-1.7e-308到1.7e+308.
類型標識符:unsigned,short,register,long和signed.
其中unsigned提示編譯器不要保留符號位,這樣可以擴大數據類型正數的范圍.比如unsigned int的范圍就變位0到65535了.
short類型用在有的編譯器不能給太大的存儲范圍,需要給一個比較低的溢出界限.比如有的編譯器就用的是32位來存儲int類型.用short來標識它可以保證int是用16位來標識的.
register表示一個變數可能會用得很頻繁.需要很快得存取速度所以指定的把它存到寄存器當中.
long表示不希望用16位來存儲整形變數時可以用long指定它用32位來存儲可以得到更大得表示範圍.
當然還有long unsigned int 這樣得類型.
用戶自定義數據類型
用戶可以使用typedef來自己定義自己需要得數據類型.如下例:
typedef unsigned long int myint;
myint num1;
這樣num1就是unsigned long int類型的了.
❹ c語言的變數定義
C語言中變數遵循「先定義後使用」的原則:
1、定義變數的格式:數據類型 變數名;
首先要強調的一點是:變數的定義是一條語句,每條語句都是以分號結尾的。故定義完變數,後面不要漏掉「;」分號。
在變數定義中,「數據類型」表示想要存儲什麼類型的數據就定義什麼類型的變數。
如想要存儲整數就定義成 int 型;想要存儲小數就定義成 float 型或 double 型;想要存儲字元就定義成 char 型等等。
「變數名」就是你想給這個變數起個什麼名字,通常都是用字母、數字與下劃線組合而成。比如:
「int i;double price;double goods_price2」等等。
就表示定義了一個整型變數 i、小數型變數price、goods_price2;
2、變數定義完成後,接下來就是使用變數,為變數賦值。
將一個值放到一個變數中,這個動作叫「賦值」。通俗點講,「給變數賦值」意思就是將一個值傳給一個變數。
賦值的格式是:
變數名 = 要賦的值;
它的意思是將=右邊的數字賦給左邊的變數。比如:
i = 3;
這就表示將 3 賦給了變數 i,此時 i 就等於 3 了。
3、變數的定義和賦值,可以分成兩步寫,也可以將它們合成一步,而且事實上,在實際編程中用得最多的也是合二為一的寫法。
形式如下:
數據類型 變數名 = 要賦的值;
比如:int i = 3;
就表示定義了一個變數 i,並把 3 賦給這個變數。它與
int i;
i =3;
是等價的。
在定義變數時也可以一次性定義多個變數,比如:
int i, j;
這就表示定義了變數 i 和 j。這里需要強調的是,當同時定義多個變數時,變數之間是用逗號隔開的,千萬別寫成分號。這是很多新手最容易犯的錯誤,即將逗號和分號記混了。
同樣也可以在定義多個變數的同時給它們賦值:
int i = 3, j = 4;
中間還是用逗號隔開,最後別忘記輸入分號。
最後需要注意的是,在較老的 C89/C90 標准(也稱 ANSI C 標准)中,變數只能在程序的開頭定義,或者說變數定義的前面不能有其他非聲明或非定義的語句。
(4)c語言里變數擴展閱讀:
在主回答中,提到了變數定義時,變數名通常都是用字母、數字與下劃線組合而成,但是實際上,變數名也不是隨便組合的,變數定義需要遵循一定的規范,否則容易產生歧義,影響整體程序代碼 的可讀性。
所以在定義變數的時候,要注意以下命名規范:
(1)、變數名的開頭必須是字母或下劃線,不能是數字。實際編程中最常用的是以字母開頭,而以下劃線開頭的變數名是系統專用的。命名應當直觀且可以拼讀,可望文知意,便於記憶和閱讀。
標識符最好採用英文單詞或其組合,不允許使用拼音。程序中的英文單詞一般不要太復雜,用詞應當准確。
(2)、變數名中的字母是區分大小寫的。比如 a 和 A 是不同的變數名,num 和 Num 也是不同的變數名。當標識符由多個片語成時,每個詞的第一個字母大寫,其餘全部小寫。
比如: int CurrentVal;
這樣的名字看起來比較清晰,遠比一長串字元好得多。
(3)、變數名絕對不可以是C語言關鍵字,不能有空格。
(4)、變數名的長度應當符合「min-length && max-information」原則。
C 是一種簡潔的語言, 命名也應該是簡潔的。例如變數名MaxVal 就比MaxValueUntilOverflow 好用。標識符的長度一般不要過長,較長的單詞可通過去掉「母音」形成縮寫。
另外,英文詞盡量不縮寫,特別是非常用專業名詞,如果有縮寫,在同一系統中對同一單詞必須使用相同的表示法,並且註明其意思。