數據的存儲,變量和常量。
程序存在的意義就是數據處理,計算機一般須要將要處理的數據存儲起來。存儲方式有兩種,存儲在變量或者常量中。以前提過,變量的值是可變的,常量的值是不可變的。dom
計算機使用隨機訪問內存(random-access memory,RAM)來存儲處理過程當中的數據。RAM中的數據是不穩定的,若是須要,你能夠改變所存儲的信息。同時,RAM中的數據也不持久,一旦關機,數據就丟失了。學習
計算機內存通常以MB爲單位,1MB=1024KB, 1KB=1024B, B爲byte的縮寫。 byte是計算機數據存儲的基礎單元。spa
RAM是按照順序排列的,一個byte接着另外一個。每個byte都有一個惟一的地址來標識,咱們用這個地址來找內存中的某一個byte。這些地址按順序分配給RAM,從0開始,一直到系統的最大限制,目前還不須要手動操做內存,都是系統自動搞定的。code
變量
是數據在內存中存儲位置的名稱,程序經過變量來找到數據的所在位置。blog
變量命名要見名知意,能夠下劃線分隔單詞,也能夠用駝峯命名法,看我的喜愛。下劃線可讀性高一些,駝峯寫代碼的時候速度快一些。
ip
C爲變量提供了不一樣的數值類型,不一樣的類型在內存中有不一樣的存儲要求,在作運算時的效率也不同。選擇合適的類型,能有效提升程序的運算效率。具體有如下兩種數字類型:整型(Integer)
爲沒有小數部分的數字,又包括有符號(signed)
和無符號(unsigned)
。有符號包括正數附屬和0,無符號則是非負數。浮點型(Floating-point)
爲有小數部分的數字。
下圖是變量的類型,關鍵字,長度及取值範圍(一直覺得char不是數值類型,這裏不太理解)。
內存
C語言中,變量在使用以前必須聲明,聲明變量是告訴編譯器變量的名字和類型,有的時候會直接初始化變量的值。若是使用未聲明的變量,編譯器會報錯。變量聲明格式以下:typename variable_name;
typename
是前面變量類型的關鍵字variable_name
是變量的名字
例如:ci
int age; //年齡,整型變量 float salary = 30000.00; //薪水,浮點型變量,初始化爲30000.00
typedef
用來給一個已存在的類型關鍵字從新命名,暫時感受不到有什麼用。不過在剛畢業的時候讀過一篇文章,如何寫一些誰都不能維護的代碼,裏邊常常用這個關鍵字。看下例子:編譯器
typedef int integer; integer count;
這裏把int這個關鍵字重命名爲integer,而後用integer這個關鍵字聲明瞭變量count。it
前文提過,使用變量以前要先聲明,這樣編譯器才能不報錯。同時,使用變量以前也要初始化,不然,變量當前的值多是不肯定。如圖,每次輸出未賦值的變量,結果都是不同的:
C中用=表示賦值操做,如:
int count; count = 18;
聲明整型變量count,以後給count賦值18.
常量
和變量同樣,都是用來存儲數據的,不一樣的是,常量中存儲的數據在程序執行過程當中是不能改變的。常量分爲字面常量(Literal Constants)
和符號常量(Symbolic Constants)
。
字面常量是在須要的地方直接寫在代碼裏的,沒有什麼特殊的深意。例如:
int count = 20; float tax_rate = 0.28;
這裏的20和0.28都是字面常量,在須要的地方直接使用就能夠了。
符號常量
是把一個字符常量用一個名稱展示(不太好表達)出來,簡單來講調用的時候用名稱就好了。經典例子π:
float circumference = 3.14 * (2 * radius); float area = 3.14 * (radius)*(radius);
這裏咱們計算了圓的周長和麪積,同時都用到了3.14這個常量,若是咱們要繼續計算其餘用到π的面積,那麼就須要一直寫3.14這個常量了。這時候符號常量就有用了,咱們把3.14這個數字定義爲符號常量PI。以後的代碼就能夠簡化了:
float circumference = PI * (2 * radius); float area = PI * (radius)*(radius);
有人說這其實沒有區別呀,每一個地方寫PI和每一個地方寫3.14差異不大。差異並不在乎寫代碼時是否多按了幾個鍵,試想下,若是這時候要求結果精確一些,須要把3.14換成3.1415926的時候,麻煩的事就來了。若是定義了常量PI,那麼咱們直接在代碼裏把PI的值改成3.1415926,一鍵搞定了所有的3.14。
常量名習慣上都要大寫,這樣容易和其餘變量區分開來。定義符號常量有兩種方式,#define和const:#define
定義常量格式以下,關鍵字+常量名+常量
,不須要以分號結尾:
#define CONSTANT_NAME literal #define PI 3.14
const
定義常量格式,關鍵字+類型+常量名=常量;
,分號結尾:
const type CONSTANT_NAME = literal; const float PI = 3.14;
兩種定義常量的方式是有區別的,會在後續的學習中逐漸解釋。