《學會 C 語言》學習筆記(三):認識 C 語言

前言

本文為《學會 C 語言》一書的學習筆記。

認識 C 語言

  1. C 語言是一種「通用目的」(General-purpose)程式語言、結構化程式語言,以及程序式程式語言。
  2. C 語言最早的標準是 K&R C,1989 年 ANSI 制定標準 C 語言後,稱為 ANSI-C,1999 年參考 C++ 語法作了少許更新,稱為 C99。
  3. C 語言是由 Dennis Ritchie 在 1972 年於貝爾實驗室設計的程式語言。
  4. C 語言的特性來自其前輩 B 語言,B 語言是一種源於 Martin Richards 設計的程式語言。
  5. 開發 C 語言的主要目的是為了設計 UNIX 作業系統。
  6. 1980 年代晚期,Bjarne Stroustrup 等人替 C 語言新增物件導向的功能,稱為 C++。

整合開發環境

使用 IDE(Integrated Drive Electronics)整合開發環境,可以協助開發者編輯、編譯和執行 C 程式。

開發 C 語言的步驟如下:

  1. 編輯程式碼(Editing),C 語言的程式檔案是標準 ANSI 文字檔案,可以使用任何文字編輯工具輸入程式碼,如記事本。C 語言程式碼檔案的副檔名預設為「.c」。
  2. 編譯程式碼(Compiling),需要使用編譯器將原始程式碼檔案轉譯成指定的 CPU 機器語言的目標檔(Object Files),其副檔名為「.obj」或「.o」。
  3. 連結函數庫(Linking),函數庫是由編譯器開發廠商提供或使用者自行撰寫的模組。此步驟將函數庫和模組的目標檔連結到程式,以建立像是「.exe」的執行檔。
  4. 執行程式(Executing),在建立 C 程式的執行檔之後,就可以執行 C 程式。

程式設計的步驟

  1. 制定需求(Requirements):了解問題本身,以便確切獲得需要輸入的資料和預期產生的結果。
  2. 設計(Design):找尋解決問題的方法和策略,將詳細的執行步驟和順序擬定下來。
  3. 分析(Analysis):在眾多的解決方法中選擇一種最好的演算法來撰寫程式。
  4. 撰寫程式碼(Coding):每次撰寫程式碼,先使用眾多解決方法中的其中一種方法就好。
  5. 驗證(Verification):確保程式執行的結果符合預期的結果,包括:證明、測試和除錯。

C 程式的基本結構

C 程式的基本結構如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
含括標頭檔

全域變數宣告

函數的原型宣告

int main()
{
程式敘述 1 ~ N;
}

傳回型態 函數名稱 1(參數列) {

}

傳回型態 函數名稱 N(參數列) {

}
  • main() 函數是必備的元素。

含括標頭檔

C 語言本身只提供簡單的語法,其功能主要是由 C 語言標準函數庫提供,標頭檔是函數庫的函數原型宣告。

如果在 C 程式有使用到函數庫的函數,就需要含括指定標頭檔,其副檔名為「.h」。

1
#include <stdio.h>

主程式

主程式 main() 函數是 C 程式的主程式,即 C 程式執行時的進入點。

1
2
3
4
5
6
int main()
{
printf("第一個 C 程式\n");

return 0;
}
  • 傳回的資料型態是 int
  • return 指令可以回傳 main() 主程式的傳回值,其資料型態通常是 main() 主程式前指定的資料型態。

標準函數庫的函數

C 語言的標準函數庫是 C 語言編譯器的內建模組,例如:數學函數、字串處理、輸出/輸入以及檔案處理等。

在 C 程式可以直接使用標準函數庫的函數來完成所需工作,像是使用 printf() 函數,將文字內容輸出到螢幕上顯示。

1
printf("第一個 C 程式\n");

C 語言的寫作風格

C 語言的寫作風格是撰寫 C 語言程式碼的規則。

程式敘述

C 程式是由程式敘述(Statements)組成,一行程式敘述包含多個運算式、運算子或關鍵字。

1
2
3
int b = 10;
a = b * c;
printf("第一個 C 程式\n");

結束符號

C 語言的「;」符號表示程式敘述的結束,每一個程式敘述後一定有「;」符號。

1
int b = 10;

程式區塊

程式區塊(Blocks)是由多個程式敘述組成,使用大括號「{」和「}」包圍。

1
2
3
4
5
int main()
{
printf("第一個 C 程式\n");
return 0;
}

程式註解

程式註解(Comments)是程式中十分重要的部分,可以提供程式內容的進一步說明,並在維護上提供更多資訊。

程式註解使用「/*」和「*/」包圍起來。

1
/* 程式範例 */

區塊註解可以跨過多行。

1
2
3
/* ----------
程式範例
----------*/

C99 可以使用「//」做單行註解。

1
// 顯示訊息

過長程式碼

C 語言是自由格式編排的語言,若程式碼需要分成兩行,直接分割即可。

1
2
result = maxValue( var1, var2, var3,
var4, var5, var6);

如果程式碼當中不可有新行字元「\n」,可以在程式碼的最後加上「\」符號。

1
2
3
sum = grades[0] + grades[1] + \
grades[2] + grades[3] + \
grades[4];

程式碼縮排

加上適當的縮排,可以讓程式碼閱讀起來更容易,並且反應出程式碼的邏輯和迴圈架構。

1
2
3
4
for (i = 0; i <= 10; i++) {
printf("%d\n", i);
total = total + i;
}

參考資料

  • 陳會安(2016)。學會 C 語言。台北市:旗標。