已发布·持续改进
Programming language · 1972 年发布
C 是一门精简、可移植的系统编程语言,编译为高效的本机代码,可直接控制内存与硬件。
C 是一门通用的过程式编程语言,由贝尔实验室的丹尼斯·里奇为编写 Unix 操作系统而设计。它后来经 ANSI 和 ISO 标准化,目前由 ISO/IEC JTC1/SC22/WG14 委员会维护标准,C99、C11、C17 等修订版被广泛使用。C 的关键字很少,由函数、结构体和指针等简单元素构成,编译器会把源代码直接翻译成机器码。
在需要可预测的性能、小巧的可执行文件以及直接控制内存的场合,C 的优势最为明显,例如操作系统内核、设备驱动、单片机固件、其他语言的运行时和数据库。几乎所有平台都有 C 编译器,C 的调用约定(ABI)也是各种语言互相调用库时的共同接口。代价是 C 不做数组越界检查,也没有自动内存管理,防止缓冲区溢出和释放后使用等错误要靠程序员自己。
入门时,先安装 GCC、Clang 或 MSVC 之一,在终端里亲手编译一些小程序。常见的学习顺序是:变量与类型、控制语句、函数、数组与字符串、指针、结构体,最后是动态内存。编译时用 -Wall -Wextra 打开警告,到 cppreference 查阅标准库,并养成用 AddressSanitizer 和 GDB 排查内存错误的习惯。
通过指针直接操作内存地址,用 malloc 和 free 自行管理内存,可以精细地控制数据布局和资源使用。
语言本身很小,并由 ISO 标准定义,符合标准的代码可以在各种操作系统和处理器上重新编译使用。
C 编译为本机机器码,几乎不需要运行时支持,甚至可用于没有操作系统的固件和引导程序。
C 的函数接口是事实上的标准 ABI,Python、Rust、Go 等语言都能通过 FFI 直接调用 C 库。
在 Debian、Ubuntu 等 Linux 发行版上,用下面的命令安装 GCC 和 Make(Fedora 用 sudo dnf install gcc make)。在 macOS 上,运行 xcode-select --install 安装 Xcode 命令行工具即可使用 Clang。在 Windows 上,可以安装 MSYS2 后在 UCRT64 终端中运行 pacman -S mingw-w64-ucrt-x86_64-gcc,或安装 Visual Studio Build Tools 并选择“使用 C++ 的桌面开发”工作负载。
sudo apt install build-essential打开新的终端,确认能显示编译器版本。macOS 上的 gcc 命令实际指向 Apple Clang,因此会显示 Clang 的版本。如果安装的是 MSVC,请在 Developer Command Prompt 中运行 cl 进行确认。
gcc --version把第一个程序保存为 hello.c,开启警告并按 C17 标准编译后运行。使用 MSVC 时,用 cl /W4 hello.c 编译,然后运行 hello.exe。
gcc -Wall -Wextra -std=c17 hello.c -o hello && ./hello#include <stdio.h> 引入声明了 printf 的标准输入输出头文件。main 函数是程序的入口,(void) 表示它不接收参数。printf 输出字符串,\n 表示换行。return 0 告诉操作系统程序正常结束。gcc 把源代码编译成名为 hello 的可执行文件,再用 ./hello 运行。
hello.c
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
gcc hello.c -o hello && ./hello共六章,带你从安装一步步了解 C 的核心概念。
在这里提问、分享经验,交流关于 C 的看法。
还没有讨论。来发起第一个吧。
0 条评论
登录 · 登录后即可发表评论。
来发表第一条评论吧。