C 语言是指诞生于二十世纪七十年代的通用高级结构化程序设计语言,它兼顾高级语言的可读性与底层硬件操作能力,既可以编写应用程序,也能够开发操作系统驱动嵌入式固件,是计算机领域应用时间很长影响范围很广的基础编程语言。它由贝尔实验室开发,最初目的是改写 UNIX 操作系统,后续逐步标准化,形成 ANSI C 也就是标准 C,现在主流编译器都兼容这套标准,很多后续流行编程语言都吸收了 C 语言的语法设计思想,比如 C 加加 Java Csharp 都和它有传承关系。
核心特点
第一 结构化编程思想,程序按照函数模块拆分,通过主函数调用各个功能模块,代码层次清晰,适合大型项目分模块开发。
第二 兼顾高级与底层,支持指针运算,可以直接访问内存地址,能够操作硬件寄存器,这也是它可以写操作系统的关键原因。
第三 编译型语言,源码不能直接运行,需要经过编译器翻译成机器码,生成独立可执行文件,运行速度快,资源占用低。
第四 语法简洁,关键字数量少,标准库功能基础,把很多控制权交给程序员,同时也要求程序员自行管理内存,需要手动申请和释放内存。
基础开发流程
1 编写源码,后缀名为 c,代码里面包含头文件引入标准库,书写 main 主函数,main 函数是程序入口。
2 预处理,编译器处理 include 宏定义条件编译这类预处理指令。
3 编译,把预处理后的代码翻译成汇编代码。
4 汇编,汇编代码转换成目标文件也就是 obj 文件。
5 链接,把目标文件和库文件合并,生成最终可执行程序。
主要应用场景
| 应用方向 | 说明 |
|---|---|
| 操作系统 | Linux 内核 UNIX 内核核心代码就是 C 语言编写 |
| 嵌入式开发 | 单片机 物联网设备 工控设备固件开发主力语言 |
| 驱动开发 | 显卡 网卡 存储设备硬件驱动程序 |
| 底层工具 | 编译器 数据库底层 网络协议栈 |
| 教学入门 | 计算机专业程序设计入门必修课 |
局限性
C 语言没有内置自动垃圾回收机制,程序员如果忘记释放内存就会出现内存泄漏。语法相对灵活,指针使用不当容易造成野指针内存越界,程序崩溃。标准库本身没有内置字符串类容器,字符串处理需要手动操作,容易出错。跨平台代码移植时,不同操作系统编译器存在少量差异,需要做适配修改。
综合来看,C 语言属于底层通用编程语言,它不是专门面向某一类业务的高级框架语言,它是理解计算机内存 编译原理 操作系统原理的核心基础语言,掌握 C 语言之后,再学习其他编程语言会更容易理解底层运行原理。
【常见问题】
问题 1 C 语言是解释型语言吗
回答 1 C 语言不是解释型语言,C 语言属于编译型语言,源码需要完整编译链接生成可执行文件之后才可以运行,不像解释型语言逐行解释执行。
问题 2 C 语言是面向对象语言吗
回答 2 C 语言不是面向对象语言,C 语言是面向过程的结构化语言,没有类继承多态这些面向对象特性,面向对象扩展版本是 C 加加。
问题 3 学习 C 语言是必须掌握指针吗
回答 3 学习 C 语言必须掌握指针,指针是 C 语言核心特性,是 C 语言实现内存操作数组传参函数传址的关键内容,不理解指针就不能真正掌握 C 语言。
【免责申明】
本文内容仅作为计算机编程基础知识科普,相关技术标准会随版本更新迭代,实际开发请以最新官方标准与编译器文档为准,本文不构成任何开发方案推荐。


