编程语言运行原理
借助一个程序,那个程序理解后执行
分为2种方式:解释和编译
解释的原理

编译的原理

任何语言都可以解释和编译执行,只是常用方法不同
任何语言都可以解释和编译执行,只是常用方法不同
| 对比维度 | 解释型语言(Python、JavaScript、Ruby) | 编译型语言(C、C++、Go、Rust) |
|---|---|---|
| 执行方式 | 源代码由解释器逐行读取、翻译并执行,不生成独立的机器码文件 | 源代码通过编译器一次性全部翻译成机器码,生成可执行文件(.exe 或二进制文件) |
| 执行速度 | 较慢(通常慢 10~100 倍),因为每执行一次都要重新翻译 | 极快,直接运行底层机器码,无中间翻译开销 |
| 开发效率 | 极高,无需等待编译,修改后立即运行,适合快速迭代 | 较低,每次修改需重新编译链接,大型项目编译可能耗时数分钟 |
| 跨平台性 | 极好,只需安装对应平台解释器,同一份源码直接运行 | 较差,需为每个目标平台(Windows/Linux/macOS/ARM)单独编译 |
| 内存管理 | 自动垃圾回收(GC),开发者无需手动管理内存 | 手动管理(malloc/free 或 new/delete),或借助智能指针(C++) |
| 错误检测 | 运行时才暴露错误(如类型错误、语法错误在运行到该行时才报错) | 编译时就检测出大部分错误(类型错误、语法错误、未定义引用等) |
| 底层控制 | 弱,无法直接操作内存地址、寄存器或硬件中断 | 极强,可精确控制内存布局、指针运算、内联汇编 |
| 典型应用场景 | Web 后端、数据分析、AI/机器学习、自动化脚本、快速原型 | 操作系统、游戏引擎、嵌入式系统、数据库、高性能计算 |
| 代码安全性 | 源码直接暴露给用户(除非混淆),容易被反编译 | 编译后的二进制文件难以还原源码,知识产权保护更强 |
| 调试体验 | 交互式调试方便(REPL),可随时查看变量状态 | 调试需借助 GDB/Linux 或 Visual Studio,断点调试但需重新编译 |
| 内存占用 | 通常较大(解释器 + 运行时环境 + 大量对象开销) | 较小,二进制文件紧凑,内存使用更高效 |
| 动态特性 | 丰富(动态类型、运行时修改类/函数、反射、装饰器) | 有限(静态类型,除非用 RTTI 或虚函数模拟少量动态行为) |
| 标准库/生态 | 生态极其丰富(如 Python 的 PyPI,JavaScript 的 npm) | 生态成熟但更偏底层(如 C++ 的 Boost、STL) |
| 启动时间 | 较慢,需加载解释器和依赖库 | 极快,操作系统直接加载可执行文件 |
| 热更新能力 | 支持,可在不重启服务的情况下更新代码(如 Python 的 reload) | 不支持,需重启进程加载新的二进制文件 |
语言无编译/解释之分
常见的执行方式而已
C语言
用途:
操作系统、嵌入式系统
现代的编程语言的语法差异很小 几乎都是C-Like语言 语言能力/适用领域主要是由库程序传统所决定的
历史

发展与版本
| 年份 | 版本/标准 | 主要特性与变化 | 地位与影响 |
|---|---|---|---|
| 1969~1973 | 诞生期(K&R C 前身) | Dennis Ritchie 在贝尔实验室基于 B 语言开发出 C 语言,用于重写 UNIX 操作系统 | C 语言的雏形,奠定了系统编程语言的基础 |
| 1978 | K&R C | Brian Kernighan 和 Dennis Ritchie 合著《The C Programming Language》第一版,成为事实标准 | 第一份权威参考,被称为”K&R C”,定义了函数声明方式(旧式风格) |
| 1989 | ANSI C(C89) | 美国国家标准协会(ANSI)正式标准化,增加函数原型(prototype)、void
类型、const 修饰符等 | 第一个官方标准,C 语言走向规范化,被广泛采用 |
| 1990 | ISO C(C90) | 国际标准化组织(ISO)采纳 ANSI C 为国际标准(ISO/IEC 9899:1990),内容与 C89 基本相同 | 使 C 成为国际通用标准,提升了跨平台兼容性 |
| 1995 | AMD1(C95) | ISO
发布第一次技术修正,增加宽字符支持(wchar_t)、<iso646.h>
等 | 增强国际化能力,支持多字节字符集 |
| 1999 | C99(ISO/IEC 9899:1999) | 新增内联函数(inline)、变长数组(VLA)、long long
类型、<stdbool.h>、<stdint.h>、复合字面量、restrict
关键字、单行注释(//)等 | 大幅现代化 C 语言,增加了许多实用特性,但编译器支持较慢 |
| 2001 | C01(TC1) | C99 的技术勘误(Technical Corrigendum 1) | 修复 C99 标准中的缺陷,无新特性 |
| 2004 | C04(TC2) | C99 的第二次技术勘误 | 继续完善 C99 标准细节 |
| 2007 | C07(TC3) | C99 的第三次技术勘误 | 最后一次对 C99 的修补 |
| 2011 | C11(ISO/IEC 9899:2011) | 增加多线程支持(<threads.h>)、原子操作(<stdatomic.h>)、_Generic
泛型、_Static_assert 静态断言、_Alignof
内存对齐、边界检查接口(Annex K)、移除 gets() 函数 | 适应现代硬件多核趋势,提高安全性和可移植性,成为主流标准 |
| 2017 | C17(ISO/IEC 9899:2018) | C11 的缺陷修复版本,无新语言特性,主要内容为技术勘误和澄清 | 目前最广泛使用的稳定标准,也称为 C18(实际为 2018 年发布) |
| 2020 | C2x | 计划新增:typeof 运算符、属性([[]]
语法)、#embed
资源嵌入、十进制浮点数、constexpr、无空指针检查优化等 | 进一步现代化 C 语言,缩小与 C++ 的差距,预计不晚于 2024 年正式发布 |
| 2023 | C23 | 基于 C2x 草案,预计正式发布的版本,可能包含上述特性及更多改进 | 新一代 C 标准,旨在保持 C 语言的现代性和安全性 |
C的详细用法
C是工业语言

C的编写工具
C语言开发工具分类对比
| 场景 | 推荐工具 | 核心特点 | 优缺点 |
|---|---|---|---|
| 竞赛用 | Code::Blocks | 开源、跨平台、轻量,被指定为ACM/ICPC国际大学生程序设计竞赛的推荐编译器 | ✅ 即装即用,内置MinGW,无需繁琐配置 ✅ 支持GCC/Clang/MSVC等多种编译器切换 |
| GUIDE | 北航研发,专为NOI(全国青少年信息学奥赛)设计 | ✅ 支持单文件编译调试,无需创建工程 ✅ 跨平台(Windows/Linux),界面一致 ⚠️ 主要服务于国内信息学竞赛生态 | |
| Dev-C++(小熊猫版) | 经典入门工具,国内开发者持续维护优化 | ✅ 体积小、安装快、界面简洁,适合新手 ⚠️ 原版已停止更新,对C11/C17标准支持一般 | |
| 大型项目 | Visual Studio | 微软出品,功能全覆盖,Windows平台首选 | ✅ 调试能力极强,适合复杂Windows项目 ✅ 智能补全、内存诊断等专业级功能 ⚠️ 体积巨大(超10GB),界面复杂,资源占用高 |
| CLion | JetBrains旗下,跨平台,智能重构顶尖 | ✅ 代码分析和重构能力极强,深度集成CMake ✅ 现代化UI,开发体验流畅 ⚠️ 付费软件,对硬件要求较高 | |
| CodeLite | 开源、跨平台,专为C/C++开发设计 | ✅ 支持GCC/Clang/MSVC等多种编译器 ✅ 支持语言服务器协议(LSP),可扩展性强 | |
| 日常编写 | VS Code | 轻量编辑器,插件生态极其丰富 | ✅ 体积小、颜值高、跨平台 ✅ 安装C/C++和Code Runner插件即可运行 ⚠️ 需手动安装MinGW编译器并配置环境变量(对新手有一定门槛) |
| Sublime Text | 启动速度极快,界面极简 | ✅ 追求”快”和简洁的优选 ⚠️ 调试功能较弱,需依赖第三方插件 | |
| Vim/Emacs | 命令行”神器”,纯键盘操作 | ✅ 效率拉满,适合Linux/macOS或命令行爱好者 ⚠️ 学习门槛极高,需记忆大量快捷键 |
选型总结建议
- 如果你参加算法竞赛:首选
Code::Blocks(ACM官方推荐),或者用
GUIDE(NOI专用,国内竞赛环境更友好) - 如果你做大型工程项目(Windows平台):上
Visual Studio,功能全面,调试能力无出其右 - 如果你做跨平台大型项目且有预算:用
CLion,体验和智能化程度最佳 - 如果你是日常学习/写小项目/追求颜值和轻量:选
VS Code + MinGW,配置好后用起来很顺手 - 如果你是纯新手,想开箱即用:从
小熊猫Dev-C++ 或 Code::Blocks
开始,省去环境配置的烦恼
这里给一些常用的编译器下载链接
VSC点击前往VSC官网
小熊猫DEV-c++点击前往
变量的分类
全局变量和局部变量
Comments NOTHING