C 語言學習筆記 (一):C 語言的基本介紹及特點
學習書籍:C 語言學習手冊 第四版。作者: 洪維恩
這是一篇記錄自己學習 C 語言的過程,算是給自己看的筆記,所以這裡面的內容,是我整理書中我認為重要的部分,然後用自己的方式重新寫一遍,如果有圖,我會理解完,再自己畫出來,內容肯定會和課本上有出入,若有錯誤,或是理解錯的地方,希望能讓我知道。
在之前的文章已經將 Visual Studio 裝好 (連結),現在正式開始啟動自己的 C 語言學習計畫。
C 語言概述
C 語言是一種通用程式語言,目前廣泛應用到程式軟體開發或是嵌入式系統上,由 Dennis Ritchie 博士在 1972 年時,以 B 語言為基礎,在貝爾實驗室設計、開發出來的程式語言。作為一套歷史悠久的程式,其他程式語言也都有 C 語言的概念或思維存在,也是學校最常作為程式課程的語言之一。
C 語言的特點
- 高效率編譯式語言
- 介於中高階語言之間
- 可攜性高 (跨平台能力較高)
- 靈活控制流程 (能夠寫出結構化或模組化的程式)
在機器中如何執行程式語言?
一般來說,原始程式碼需先轉換成機器碼,才能讓程式正確執行。通常轉換程式分成直譯器 (interpreter) 及編譯器 (Compiler)。
何謂直譯器
直譯器會逐行轉換原始程式碼,若遇到錯誤會直接中斷,直到錯誤修正再繼續執行。由於每次執行都要一行一行進行轉換,因此執行速度、效率較差。
何謂編譯器
編譯器會先檢查程式語法正確性,再將其轉換成可執行檔。每次修改都需要重新進行編譯,才能更新可執行檔的內容。經過編譯的程式不須再進行轉換,因此效率比直譯器要高出許多。
編譯與執行的過程
編譯過程中會產生目的檔 (object file)。當編譯器進行編譯時,除了檢查語法正確性之外,還需要將標頭檔連結進來,檢查完成之後就會產生目的檔。產生目的檔之後,再由連結器 (linker) 去連接函式庫進來,連結在一起之後,製作出可執行檔 (.exe) 出來。
最基本的 C 語言程式架構
/* 標頭檔*/
#include<stdio.h>
#include<stdlib.h>
/* 主程式 */
int main() {
printf("Hello world!!");
return 0
}
可以大致分為標頭檔及主程式
標頭檔是用來引入函式庫;主程式是用來規劃整個程式流程控制的地方。
除此之外,還有副函式及陣列定義等等進階用法。
變數
變數是用來存放資料到記憶體的方法,也是程式最常用的操作。
在 C 語言中,設定變數時,必須給定資料型態,編譯器才能配置變數給記憶體。
不同於 Python 或是 MATLAB,這樣更能確實掌控變數
int a; /*宣告整數型態的變數 a*/
名稱宣告的限制
- 第一個字必須是英文字母 (不能是數字,但是可以使用底線)
- 不能用標點符號
- 有區分大小寫
- 不能含有空格
- 不能用 C 語言的關鍵字
宣告方式:
/* 直接宣告變數型態跟值 */
int num1 = 1;
/* 先宣告變數型態 - 1 */
int num2;
num2 = 2;
/* 先宣告變數型態 - 2 */
int num3, num4;
char ch;
num3 = 3;
num4 = 4;
ch = 'a';
識別字及關鍵字
識別字是定義的變數名稱或是函數名稱
關鍵字是 C 語言的保留字,像是 if、for、else、goto ……等等之類的