01-C语言简介

plana_lab 发布于 4 小时前 18 次阅读




编程语言运行原理

借助一个程序,那个程序理解后执行

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

变量的分类

全局变量和局部变量