C (程式語言)
C程式語言係一隻電腦程式語言,通常淨係叫C。佢係丹尼士列奇(Dennis Ritchie)響1970年代作畀Unix操作系統用嘅。因為佢兼具高低階語言特徵,所以用途廣泛:由底層操作系統到上層唔同軟件,都可以用C嚟寫。
設計
編輯C語言設計目標係提供一種能以簡易嘅方式編譯、處理低階記憶體、產生最少嘅機械碼同啲唔需要任何執行環境支援就行到嘅程式語言。縱使C語言有咗好多低階處理嘅功能,但喼住良好跨平台嘅特性,以一個標準規格寫出嘅C語言程式可以喺第啲電腦平台上進行編譯,甚至有埋啲嵌入式處理器同埋超級電腦嘅作業平台。
概述
編輯特性
編輯語法
編輯Hello World 程序
編輯下面係一個輸出設備(stdout)印串字 "Hello, world!" 出嚟嘅簡單程式,通常係初學程式語言嗰陣嘅第一個程式:
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}
了解
編輯C語言由函數同變量組成,函數就似係Fortran入面嘅子程序同函數。
C嘅程序從 main
開始行。main()
函数會調用同控制第啲函數嚟做嘢,例如上面嘅printf
。程式員可以自己寫函數,或從庫中調用函數。喺上面嘅return 0;
令到main()
畀返個值去調用程序嘅殼層,表明程序成功行完。
一個C語言嘅函數由返回值、函數名、參數列表同函數體組成。函數體嘅語法同啲複合句一樣。
複合句
編輯C語言複合句嘅格式係:
{
語句;
語句;
/* ... */
}
複合句可以令幾句語句喺文法上變成個語句。
有時複合句係必須嘅,唔用就會產生錯誤。好似用循環語句,萬一有幾句嘢,最好用返括號將佢哋合併做句複合語句。冇複合語句,系統就齋睇第一個分號前嘅內容做成個循環體。
需要注意嘅係,部分C編譯器並唔撐喺任意位置度用複合句。
條件句
編輯C語言有兩種條件句形式,分别係if同switch。
If 嘅格式係噉:
if(算術式) // 萬一
語句;
// 仲有時會else:
else // 否則
語句;
算術式嘅值如果唔係零就代表條件係真;如果條件係假嘅,程式會跳過if度嘅語句,直接行之後嘅語句。但係如果if後面有else而條件係假嘅話,程式會跳去else度執行。if同else後面嗰句可以係第個if語句。有呢種套疊式嘅結構先有更複雜嘅邏輯控制流程。喺一般情況下,else實同最近嘅if成啤,所以會成日用啲括弧{}越過呢個限制。比較下面兩種情況:
if(論理式)
if (論理式)
語句;
else
語句;
if(論理式A)
{
if(論理式B)
語句;
}
else
語句;
要注意依度嘅縮進同換行齋係方便啲嚟讀。編譯器唔識依啲縮進層級估個 if 同 else 對應嘅關係。
switch通常用响對幾種有明確值嘅條件。佢要求嘅條件值通常係整數或者字元。同switch搭配嘅條件轉移係case。控制程式會跳到滿足條件嘅case一直向下執行,直到語句完曬或者撞到break。通常用到default將第啲例外嘅情況包埋。如果switch語句入面有唔成立嘅條件,控制程式會跳去default行;冇咗default,就會直接行下句語句。switch係可以嵌套嘅。
switch 個值出嚟
{
case A:
case B:
語句段一; // AB都行緊
// 第啲句…
break; // 跳到去 switch 最後嗰度
case C:
語句段二;
break;
default: // 唔係A、B、C嘅會嚟伊度
}
If句式可以省略成噉:
// 算術式?值1:值2;
// 如:
a = b>c ? b : c // 如果變數b嘅值大過變數c就將變數b嘅值俾哂變數a
循環句
編輯C語言有三種循環句:
do
語句;
while(判斷式);
// 同:
while(判斷式)
語句;
// 同:
for(初始化;判斷式;算術式)
語句;
喺while同for入面,語句不斷行直到判斷式嘅值係零。喺do...while語句入面,循環仲會先行一次。呢三種循環結構可以互相轉化:
for(初始化;判斷式;算術式)
語句;
如果語句冇用continue語句,就相當於
初始化;
while (判斷式) {
語句;
算術式;
}
當循環條件一直係真嗰陣,就會產生無窮迴圈。
跳轉句
編輯跳轉句包括四種:goto、continue、break同return。
goto 標記;
goto語句係無條件轉移句,標記一定要喺當前函數嘅定義,要用標記:嘅格式定義。程式會跳到去標記度繼續執行。由於goto難讀啲,所以對新手嚟講係少用啲。GCC 編譯器拓展撐對指針goto同埋宏內嘅goto,一定程度上增強咗goto嘅可讀性。
continue語句用喺迴圈句入面,作用係完哂前一輪嘅迴圈,即刻開始下一輪迴圈。
break語句用喺迴圈句定switch入面,作用係完咗當前迴圈,跳出循環體外繼續行。但係break跳得一層迴圈。要跳出多重迴圈嗰陣,可以用goto令至程式更為簡潔。
當一個函數行完,要俾返回值嗰陣用return。return可以係個運算式或變數。如果return後面冇值就會乜都唔俾。
C語言嘅變種
編輯參考資料
編輯- ↑ Brian W. Kernighan and Dennis M. Ritchie (1988). The C programming Language (英文). Prentice-Hall. ISBN 0-13-110362-8.
In C, all function arguments are passed ``by value.