前言
本文為《學會 C 語言》一書的學習筆記。
概述
電腦程式在執行時,常常需要記住一些資料,所以程式語言會提供一個地方用來記得執行時的一些資料,這個地方就是變數(Variables)。
變數儲存在哪裡
變數儲存在電腦的記憶體裡,變數是一個名稱,用來代表電腦記憶體空間的一個位址。
變數的基本操作
變數只有兩種操作:
- 存値,指定變數成為一個全新的値。
- 取値,取得目前的變數値。
常數
常數(Constants)就是固定不變的數値,如 A
、100
,也就是數値或字元値。
資料型態
資料型態決定變數能夠儲存數値或字元等資料。
識別字
程式設計者在程式碼中自行命名的元素,稱為識別字(Identifier),如變數名稱。而保留字(Reserved Words)是一些對編譯器有特殊意義的名稱,程式設計者不得再重新賦予不同的用途。
識別字名稱(Identifier Names)是指 C 語言的變數、函數、標籤或各種自訂資料型態的名稱,可以包含英文字母、數字和底線「_
」字元組成的名稱。
變數
變數就是使用有意義的名稱來代表數字的記憶體位址。
宣告變數並指定初値
C 語言提供四種基本資料型態:
char
,代表字元。int
,代表整數。float
,代表單精度浮點數。double
,代表雙精度浮點數。
1 |
|
- 格式字元「
%d
」用來輸出整數。 - 格式字元「
%f
」用來輸出浮點數。
C 語言除了一行宣告一個變數外,也可以在同一行宣告多個變數,分別指定初値。
1 | double height = 175.5, weight = 75.5; |
也可以只宣告變數,但不指定初値。
1 | int grage; |
指定敘述
指定敘述(Assignment Statements)是在程式執行中更改變數値,在宣告變數時沒有指定初値,可以使用指定敘述來指定或更改。
C 語言的指定敘述是「=
」符號,可以更改變數値成為常數値、其他變數或運算結果。
1 |
|
- 等號左邊的是變數的記憶體空間位址,等號右邊的是變數値。
C 語言支援多重指定敘述(Multiple Assignments),可以在同一指定敘述同時指定多個變數値。
1 |
|
常數
在 C 語言,使用 #define
指令和 const
常數修飾子建立常數。
使用前置處理器的 #define
指令來定義常數。
1 |
- 這是巨集指令,所以沒有等號與分號。
使用 const
常數修飾子來定義常數。
1 | const double e = 2.71828182845 |
- 如果是使用在陣列,表示陣列的所有元素都不能更改;如果是使用在函數參數,表示函數中不允許更改其參數値。
使用常數是希望程式執行中,無法使用程式碼更改它的値。
1 |
|
資料型態
C 語言的變數需要指定使用的資料型態,告訴編譯器變數準備儲存哪種資料,以及需要配置多大的記憶體空間。注意,變數在定義以後就不能再更改資料型態。
基本資料型態
以 ANSI-C 編譯器為例,一些基本資料型態如下:
資料型態 | 說明 | 位元數 | 範圍 |
---|---|---|---|
unsigned int | 無符號整數 | 32 | 0 ~ 4,294,967,295 |
signed char | 字元 | 8 | -128 ~ 127 |
signed int | 整數 | 32 | -2,147,483,648 ~ 2,147,483,648 |
float | 單精度浮點數 | 32 | 1.18e-38 ~ 3.40e+38 |
double | 雙精度浮點數 | 64 | 2.23e-308 ~ 1.79e+308 |
延伸資料型態
從基本資料型態可以建立多種延伸資料型態如下:
資料型態 | 說明 |
---|---|
陣列(Array) | 大部分資料型態都可建立陣列 |
函數(Function) | 函數若有傳回値,就會傳回指定資料型態 |
指標(Pointer) | 指向特定資料型態記憶體位址的變數 |
結構(Structure) | 可以組合各種資料型態變數來建立新型態 |
聯合(Union) | 類似結構,在同一塊記憶體空間可以儲存不同資料型態 |
型態修飾子
C 語言提供四種型態修飾子,如下:
型態修飾子 | 說明 |
---|---|
unsigned | 無符號變數,變數値都是正整數 |
signed | 有符號變數,變數値可為正負値 |
short | 比 int 還小的範圍 |
long | 比 int 還大的範圍 |
在 C 程式可以使用 sizeof
運算子取得指定資料型態占用的位元組數。
1 | printf("char = %d\n", sizeof(char)); |
也可以取得變數占用的位元組數。
1 | printf("var1 = %d\n", sizeof(var1)); |
整數資料型態
整數資料型態(Integer Types)是指變數儲存的値為整數値,沒有小數點。
整數常數(Integer Constants)是在程式碼直接使用數字。
- 八進位:以「0」為開頭的整數値。
- 十六進位:以「0x」或「0X」為開頭的數值。
整數常數 | 十進位値 | 說明 |
---|---|---|
123 | 123 | 十進位整數 |
-243 | -234 | 十進位負整數 |
0256 | 174 | 八進位整數 |
0Xff | 255 | 十六進位整數 |
0xccf | 3279 | 十六進位整數 |
浮點數資料型態
浮點數資料型態(Floating Types)是指變數儲存的値為加上小數或使用科學符號表示的數值。
浮點常數(Floating Constant)是在程式碼直接使用浮點數値,是擁有小數點的數值。
浮點常數 | 十進位値 | 說明 |
---|---|---|
123.23 | 123.23 | 浮點數 |
.0007 | .0007 | 浮點數 |
5e4 | 50000 | 使用指數的浮點數 |
4.34e-3 | 0.00434 | 使用指數的浮點數 |
字元資料型態
字元資料型態(Character type)是指變數儲存的値為字元。
字元常數(Character Constant)是在程式碼直接使用字元符號,需要使用單引號「'
」包圍起來。
可以使用「\x
」字串開頭的兩個十六進位數字,或「\
」字串開頭的三個八進位數字來表示。
1 | char c = '\x20'; |
字串常數(String Literals)就是字串,使用 ASCII 碼的雙引號「"
」包圍起來。
1 | "學習 C 語言" |
跳脫字元
C 語言提供跳脫字元來輸入特殊字元,一些使用「\
」符號開頭的跳脫字元如下:
跳脫字元 | 說明 |
---|---|
\t | Tab 鍵 |
\r | Enter 鍵 |
' | 單引號 |
" | 雙引號 |
\ | 斜線 |
void 資料型態
void 資料型態在 C 語言是一種特殊資料型態,代表一個並不存在的値,主要使用在型態轉換、函數傳回値、參數列和指標。
參考資料
- 陳會安(2016)。學會 C 語言。台北市:旗標。