前言
Python 十分好用但並非萬能,讓我們瞭解一下別的編程語言,——本篇介紹的是 C 語言
它經歷了半個世紀的時間考驗,目前主要應用於“底層開發”,各大操作系統的內核都是以 C 語言編寫的,學習 C 語言可令你更好地理解計算機的內部運行機制。而且,C 語言經典的語法形式也被許多新興編程語言所沿用。
【文章福利】:小編有自己的學習交流羣967051845!進羣可以免費領取C語言基礎到項目實戰資料
任何文本編輯器都可以編寫 C 語言程序,但還需要有個“編譯器”(Compiler)例如 GCC 來將其編譯爲機器語言程序文件才能運行。如果你用 Windows,推薦安裝開源編譯工具集 TDM-GCC
TDM-GCC 裝好後打開命令提示符輸入以下命令查看 GCC 編譯器版本,確認可以正常運行:
gcc --version
我們用 VSCode 作爲 C 語言源代碼的編輯器,請在擴展面板搜索並安裝 C/C++ 插件,然後新建文件並命名爲 hello.c:
#include <stdio.h>
int main(int arc, char const *argv[])
{
printf("Hello World!\n");
return 0;
}
這個測試用 C 語言源代碼的第一行是包含標準輸入輸出庫“頭文件”的預編譯指令(這種不算語句);接下來是定義作爲程序入口的主函數,名稱必須爲 main,返回值要求爲整數類型,可以傳入任意多個字符類型數組作爲參數(注意任何標識符都必須確定類型且不能改變);主函數體第一條語句用格式化打印函數輸出一行文本;第二條語句返回 0 值表示主函數正常退出——C 語言用花括號標明層次結構,用分號表示語句結束,因此預編譯指令以外的代碼允許不分行地書寫。輸入代碼時 VSCode 會自動提示補全,還可以幫你規範格式,右擊選擇“格式化文件”即可)。
接下來點擊 VSCode 菜單欄上的“終端”選擇“新建終端”打開命令行模式,輸入命令編譯 hello.c 生成可執行文件 hello.exe 然後運行:
PS D:\Test\c> gcc hello.c -o hello
PS D:\Test\c> .\hello.exe
Hello World!
除了上述的可執行文件,你也可以編譯生成“共享庫”文件,如同 stdio 庫那樣提供給其他程序使用——讓我們來做一個提供累加函數的共享庫,首先新建文件 mylib.h:
int accumulate(int);
這個頭文件中是函數原型的聲明語句,指定累加函數的參數與返回值類型,函數聲明之後即可調用,否則須在定義之後方可調用。接下來新建文件 mylib.c 包含 mylib.h 並定義累加函數(可以對照一下之前同樣實現累加的 Python 代碼):
#include "mylib.h"
int accumulate(int n)
{
int result = 0;
int cnt = 1;
while (cnt <= n)
{
result += cnt;
cnt++;
}
return result;
}
請注意包含自定義頭文件的 include 指令要用引號而非尖括號,下面輸入命令生成共享庫文件 mylib.dll:
PS D:\Test\c> gcc mylib.c -shared -o mylib.dll
接下來新建文件 myapp.c 也包含 mylib.h 並調用累加函數:
#include <stdio.h>
#include "mylib.h"
int main()
{
int n;
printf("計算1累加至n,請輸入n:");
scanf("%d", &n);
int result = accumulate(n);
printf("1累加至%d的結果是%d\n", n, result);
return 0;
}
最後編譯生成可執行文件 myapp.exe 並運行,注意要指定字符編碼爲 Windows 默認的 GBK 避免中文亂碼:
PS D:\Test\c> gcc myapp.c mylib.dll -fexec-charset=GBK -o myapp
PS D:\Test\c> .\myapp.exe
計算1累加至n,請輸入n:600
1累加至600的結果是180300
對於 Python 開發者來說,只需引入標準庫的 ctypes 模塊,就可以直接使用上面的共享庫,示例代碼如下:
import os
from ctypes import CDLL
cdll = CDLL(os.path.abspath("mylib.dll"))
result = cdll.accumulate(500)
print(result)
實際上官方 Python 解釋器就是 C 語言編寫的,許多 Python 第三方包也都在底層用 C 語言實現以保證運行效率。如果你想深入學習 C 語言,推薦再安裝一個專用集成開發環境例如免費開源的 CodeBlocks http://www.codeblocks.org
福利
需要C/C++資料的朋友,因爲平臺不能發送文件,可以添加小編的學習交流羣967051845,資料就在羣文件裏。