什么是 C Programming Language?
⚡ 智能摘要
C Programming Language C语言是一种通用结构化语言,由贝尔实验室的丹尼斯·里奇于1972年创建。它与机器无关,速度快,是系统软件、操作系统、嵌入式固件以及现代编程语言(如C++)的基础。 C++, Java和 Python.

什么是 C Programming Language?
C 是一种通用编程语言,它非常流行、简单易用且灵活。它是一种结构化的、与机器无关的语言,用于编写各种各样的应用程序——从操作系统到…… Windows 以及 Linux 到复杂的程序,例如 Oracle 数据库、Git 和 Python 口译员。
C语言常被誉为现代编程的基石。一旦掌握了C语言,学习其他语言就会变得容易得多,因为大多数语言都借鉴了C语言的概念。对计算机内存的基本了解也很有帮助,因为内存几乎是所有C程序的核心。
IEEE——2018 年十大编程语言。
本指南将带您了解 C 编程语言的基础知识:它的历史、基本命令、主要应用、为什么它仍然值得学习,以及它的编译模型是如何工作的。
C语言的历史
C语言并非孤立出现,而是由一系列早期系统语言发展而来:
- ALGOL(1960): ALGOL常被誉为编程语言之父。它将结构化编程引入了更广泛的开发者群体,并在欧洲各大学中得到广泛应用。
- BCPL(1967): Basic 组合编程语言,由 Martin Richards 设计,用于编写系统软件。
- B(1970): 由AT&T贝尔实验室的肯·汤普森引入。B继承了BCPL的许多特性,并被用于编写早期的UNIX工具。
In 1972丹尼斯·里奇创作 C 在贝尔实验室,C 语言汲取了 ALGOL、BCPL 和 B 语言的精华,并添加了新的概念,使其比之前的任何语言都更具表现力。
C语言与UNIX操作系统紧密相关——UNIX操作系统本身的大部分代码都是用C语言重写的。随着C语言在贝尔实验室之外的传播,出现了适用于多种平台的商业编译器,C语言也演变成了多种互不兼容的方言。为了恢复语言的一致性,美国国家标准协会(ANSI)发布了C语言标准。 1989国际标准化组织(ISO)于1999年批准了该标准。 1990标准化版本通常被称为 美标C.
C的历史
语言如 C++ 和 Java 许多现代语言直接源自 C 语言,并沿用了 C 语言的语法和约定。因此,C 语言构成了当今大部分软件的基础。
C 基本命令
以下命令构成了几乎所有 C 程序的框架。
| C 基本命令 | 说明 |
|---|---|
#include <stdio.h> |
编译前包含 C 库中的标准输入输出头文件。 |
int main() |
主函数——所有 C 程序的执行都从这里开始。 |
{ |
标志着主功能块的开始。 |
/* some_comments */ |
一条注释。编译器会忽略两者之间的所有内容。 /* 和 */. |
printf("Hello, World!"); |
将输出打印到屏幕上。 |
getch(); |
从键盘读取单个字符(非标准,主要用于 Turbo C)。 |
return 0; |
终止主函数并向操作系统返回值 0。 |
} |
标志着主功能块的结束。 |
C语言的应用场景有哪些?主要应用
C 语言运行在大多数用户看不到的地方,但它的资源占用却非常庞大。常见应用领域包括:
- 嵌入式系统和微控制器固件。
- 系统级应用程序和驱动程序。
- 桌面应用程序,包括许多 Adobe 产品。
- 网络浏览器及其扩展程序—— Google铬含有大量的C/C++ 码。
- 数据库—— MySQL 是用 C 语言编写的最流行的数据库之一。
- Operating 系统——苹果公司的 macOS (达尔文) Microsoft WindowsLinux,以及历史上的塞班(Symbian),都是用 C 语言编写的。
- 编译器、语言运行时和解释器。
- 物联网 (IoT) 设备和家庭自动化固件。
为什么要学习C语言?
C语言是许多编程语言的基础,因此学习C语言会让后续学习任何语言都更容易。它引入了你将在其他语言中看到的相同数据类型、运算符和控制语句。 C++, Java, Python,然后出发。
投资C类股票的主要原因有:
- 速度: C 语言编译成本地代码,并能让你对内存进行细粒度控制。
- 可移植性: 用 C 语言编写的程序几乎可以在任何平台上重新编译和运行。
- 结构体: C 程序被分成多个模块,这使得测试、维护和调试更加容易。
- 紧凑型核心: C 语言只有 32 个关键字、几种数据类型和一个强大的内置库。
- 可扩展性: 你可以向库中添加自己的函数,并像调用内置函数一样调用它们。
- 职业价值: 嵌入式、内核和高性能应用领域仍然需要扎实的 C 语言技能。
创新中心 C Programming Language 方式
C 语言是一种编译型语言。编译器读取源代码,生成机器可以理解的目标文件。链接器随后将一个或多个目标文件(以及你引用的任何库)组合成一个可在目标平台上运行的可执行文件。下图展示了完整的执行流程。
市面上有许多编译器——包括在线编译器和离线编译器——它们都遵循相同的流程。常用的编译器包括:
- GCC — GNU 编译器集合,是 Linux 和许多嵌入式目标的实际标准。
- 铛 — 基于 LLVM 的前端,默认使用 macOS.
- MinGW的 — 极简 GNU for Windows,将 GCC 带到 Windows 用户。
- 可移植 C 编译器 (pcc)。
- Turbo C. — 经典的编译器,至今仍被许多学术课程所使用。
C的优点和缺点
下表总结了在为新项目选择 C 之前应该权衡的各种利弊。
| 优势 | 缺点 |
|---|---|
| 快速、底层地访问内存和硬件。 | 手动内存管理容易导致内存泄漏和缓冲区溢出等错误。 |
| 可跨架构和操作系统移植。 | 没有内置的面向对象或泛型。 |
| 语法简洁,仅使用 32 个关键字。 | 没有内置安全机制——未定义行为可能导致系统静默崩溃。 |
| 庞大的编译器、调试器和库生态系统。 | 与脚本语言相比,对于高级应用程序代码而言,其代码过于冗长。 |
| Foundation 对于现代语言而言——技能很容易迁移。 | 对于使用托管语言即可满足需求的任务,生产力会降低。 |
编写 C 语言代码的最佳实践
以下习惯能使 C 代码库保持可读性、可移植性,并避免常见的内存错误:
- 启用警告: 编译
-Wall -Wextra -Werror因此,一些细微的问题会导致构建失败。 - 初始化变量: 永远不要读取未赋值的变量。
- 检查返回值:
malloc文件 I/O 和系统调用都会通过返回码发出错误信号。 - 每对
malloc配free: 使用静态分析或 AddressSanitizer 来捕获泄漏。 - 优先选择更安全的字符串函数: 使用
snprintf而不是sprintf和strncpy小心。 - 使用头部保护: 使用以下方式保护每个标头
#ifndef / #define / #endif守护。 - 遵循标准: 除非有充分的理由使用编译器扩展,否则请编写可移植的 ANSI/C99/C11 代码。




