C程式語言介紹

開始學習C,一種基礎的程式語言 C可能是最廣為人知的程式語言。它被全球各地的電腦科學課程作為參考語言,可能和Python和Java一起是人們在學校學得最多的語言。 我記得它是我學到的第二種程式語言,之後是Pascal。 C不僅僅是學生用來學習程式設計的語言,它不是一門學術語言。而且我會說它並不是最容易的語言,因為C是一種相對較低階的程式語言。 今天,在嵌入式設備中廣泛使用C,它也為大多數使用Linux的網絡服務器提供動力。Linux內核使用C編寫,這也意味著C動力了所有Android設備的核心。我們可以說C代碼運行了整個世界的很大一部分。真是令人驚訝。 在C誕生之時,它被認為是一種高階語言,因為它在各種機器上都可移植。今天我們基本上認為,可以在Mac上運行在Windows或Linux上的程序,也許可以使用Node.js或Python。但在過去,根本不是這種情況。C所帶來的是一種易於實現的語言,具有可以輕易移植到不同機器的編譯器。 我提到了編譯器:C是一種編譯語言,就像Go、Java、Swift或Rust一樣。其他流行的編程語言如Python、Ruby或JavaScript則是解釋語言。差異是顯著的:編譯語言會生成一個可以直接執行和分發的二進製文件。 C不會進行垃圾回收。這意味著我們必須自己管理內存。這是一個複雜的任務,需要非常小心地防止bug,但這也是C成為編寫Arduino等嵌入式設備程序的理想語言。 C不隱藏底層機器的複雜性和功能。一旦你知道你可以做什麼,你就擁有了很大的能力。 現在,我想介紹第一個C程序,我們將它稱為“Hello, World!” #include <stdio.h> int main(void) { printf("Hello, World!"); } 讓我們來描述一下程式原始碼:首先我們引入了stdio庫(這個名稱代表標準輸入輸出庫)。 這個庫讓我們可以使用輸入/輸出函數。 C本身非常小,除了核心部分,其他任何東西都是由庫提供的。這些庫有些是由普通程序員編寫的,並提供給其他人使用。還有一些庫是編譯器內建的,像stdio和其他庫一樣。 stdio是提供printf()函數的庫。 這個函數被包裝在main()函數中。main()函數是任何C程序的入口點。 那麼,什麼是函數? 函數是一個例程,它接受一個或多個參數並返回一個單一值。 在main()的情況下,該函數不接受任何參數,並返回一個整數。在參數中使用void關鍵字來識別,並使用int關鍵字來聲明返回值。 函數有一個函數體,它用大括號括起來,在函數體內我們放置了函數執行所需的所有代碼。 printf()函數的寫法不同,正如你所見。它沒有定義返回值,我們傳入一個用雙引號括起來的字符串。我們沒有指定參數的類型。 這是因為這是一個函數調用。在stdio庫的某個地方,printf被定義為 int printf(const char *format, ...); 你現在不需要理解這意味著什麼,但簡而言之,這就是函數的定義,當我們調用printf("Hello, World!");時,函數就執行了。 上面我們定義的main()函數: #include <stdio.h> int main(void) { printf("Hello, World!"); } 在執行程序時,將由操作系統來執行。 那麼,如何執行C程序? 如前所述,C是一種編譯語言。要運行程序,我們必須首先編譯它。任何Linux或macOS電腦都已內建了C編譯器。對於Windows,您可以使用Windows Subsystem for Linux(WSL)。 無論如何,當您打開終端窗口時,可以輸入gcc,這個命令應該會返回一個錯誤,說您沒有指定任何文件: 這很好。這意味著C編譯器存在,我們可以開始使用它。 現在輸入上面的程序到一個hello.c文件中。您可以使用任何編輯器,但出於簡單起見,我將使用終端中的nano編輯器: 輸入程序: 現在按下ctrl-X退出: 按下y鍵確認,然後按回車鍵確認文件名: 這樣,我們應該回到終端: 現在輸入 gcc hello.c -o hello 該程序不應該產生任何錯誤: 但它應該生成一個hello 可執行文件。現在輸入 ./hello 來運行它: 我在程序名前面加了./以告訴終端該指令位於當前文件夾...