#include
及標頭檔
之前所介紹過的stdio.h
及stdlib.h
這兩個檔案,我們稱之為標頭檔(header file),它們被含括在程式碼的起頭處。
#include <標頭檔>
當C在編譯時,會把這行敘述以整個標頭檔的內容來取代。
⤍
為什麼不含括stdio.h
或stdlib.h
標頭檔,還是可以編譯?
有些編譯器,就算沒有將stdio.h
及stdlib.h
標頭檔載入,程式依然可以正確的編譯,這是因為這些編譯器會自動將常用的標頭檔載入。
對於語法檢查較嚴格的編譯器,如果沒有含括該有的標頭檔,可能會無法順利編譯。因此在撰寫程式碼時,建議習慣性的含括該有的標頭檔,也可以提高程式的可攜性。
⤍
標頭檔的特性及好處
在C語言中,性質較接近的函數,其格式通常都會宣告在同一個標頭檔裡。像是前面提到的stdio.h
提供了與輸入/輸出有關的函數資訊;math.h
提供了與數學有關的函數資訊(如sin(x)
);而有關時間函數的資訊則是宣告在time.h
等等。
標頭檔裡已經包含了常用的函數及它們的宣告格式都定義好了,所以程式設計師不必花費時間撰寫相關的標頭檔,可以省下程式開發時間。
#include
為C語言前置處理器(pre-processor)的指令,這種指令會在程式編譯之前執行,之後會看到一些以#
開頭的指令,這些都是屬於前置處理器的指令。
main()
及函數的本體
C程式是由許多函數組合而成,像是main()
及printf()
都是C語言所提供的標準函數。main()
是一個不可或缺的函數,因為它是程式執行的開端,因此每一個C程式必須有一個main()
函數,且只能有一個。
以main()
函數而言,在左大括號({)
及右大括號(})
裡面的程式碼稱為本體(body)。本體內的每個指令敘述結束時,必須以分號(;)
做結尾。
在C語言裡,我們把一個用來達成特定工作的程式片段稱為區塊(block),像是用來判斷條件的程式區塊,或是執行重複動作的迴圈區塊等。
變數
變數可以用來存放資料,在程式語言中扮演了最基本的角色。在使用變數前必須先宣告它將來要儲存的資料型態,這樣才能讓編譯器配置適合的記憶體空間給它。
⤍
變數的宣告
在程式中宣告一個可以存放整數的變數,變數的名稱為num
:
int num; /* 宣告num為整數變數 */
如果要同時宣告多個整數變數,可以像上面一樣分別宣告它們,或是寫在同一個敘述中,但需要以逗號分開:
int num1, num2, num3; /* 同時宣告三個整數變數 */
⤍
變數的資料型態
C語言的資料型態有字元(char)
、整數(int)
、長整數(long)
、短整數(short)
、浮點數(float)
、倍精度浮點數(double)
等型態。除了這些,還可以決定變數為有號(signed)
或是無號(unsigned)
。
⤍
變數的名稱與限制
通常會依照個人喜好來決定變數的名稱,但不可以使用到C語言的關鍵字(keyword)。
我們可以用num
還代表數字,car
來代表車子,當然也可以使用abc
等簡單的英文子母來代表某個變數。
有些編譯器會限制變數名稱的長度,所以在決定變數名稱時,要避免使用過長的變數名稱。
變數名稱的字元可以是英文字母、數字或底線,但不能是空白字元,且第一個字元不能是數字。下面是一些正確及錯誤的變數名稱:
apple_m1 /* 正確 */
_windows /* 正確 */
2dogs /* 錯誤,第一個字元不能是數字 */
return /* 錯誤,return為C語言的關鍵字 */
變數的設值
宣告時設值
int num = 2; /* 宣告並直接給值 */
宣告後設值
int num; /* 宣告 */
char ch; /* 宣告 */
num = 2; /* 給值 */
ch = 'e'; /* 給值 */
為什麼要宣告變數
在撰寫直譯式語言時,常會把變數名稱輸入錯誤,造成程式在除錯上的困難。由於這些語言不需要宣告變數,因此無法檢查變數名稱的正確性。
當我們在C語言程式中宣告了變數的型態及名稱後,編譯器就可以很快的找到錯誤的變數名稱,可以節省不少時間。
printf()
函數
printf()
函數以格式化的輸出方式,將函數中的引數列印到螢幕中,其中引數間須以逗號隔開。
如果想在螢幕上印出I have 2 dogs.
字串,其中2
被存在變數num
中,則code如下:
printf("I have %d dogs.\n", num);
%d
符號是用來告訴編譯器,把整數num
的值以十進位的格式輸出到這個位置。
#C語言 #解析C語言 #Analyze a C program
發佈留言