C Primer Plus——第一章 初识C语言

📅 2026/8/11 17:20:53
C Primer Plus——第一章 初识C语言
一、C语言的起源时间/地点1972年贝尔实验室。设计者丹尼斯·里奇Dennis Ritchie与肯·汤普逊Ken Thompson。背景为开发UNIX操作系统而设计。前身在汤普逊发明的B语言基础上增加了数据类型等特性发展出C语言。二、选择C语言的理由设计特性融合了计算机科学理论与实践的精华。支持自顶向下的规划、结构化编程和模块化设计。高效性生成的目标代码紧凑、运行速度快接近汇编语言效率。可移植性程序稍作修改或无需修改即可在不同平台编译运行。强大而灵活许多编译器和解释器本身就用C语言编写。常用于操作系统、嵌入式系统等底层开发。面向程序员允许直接访问硬件、操控内存中的位和地址。提供了丰富的运算符和控制结构。缺点指针操作复杂容易引发内存错误。某些运算符优先级不易记忆需要编码时谨慎。三、C语言的应用范围UNIX/Linux 操作系统内核与大量系统工具。嵌入式系统单片机、家电、汽车电子等。计算机游戏游戏引擎、高性能核心模块。机器人工程运动控制、传感器处理。PC应用办公软件、图形图像处理工具等。计算机语言实现很多高级语言的编译器和解释器由C开发。四、计算机能做什么基础概念CPU的工作不断从内存中获取指令并执行。内部小工作区由若干寄存器组成用于暂存数据和地址。一切皆数字计算机中的数据和指令均以二进制数字形式存储和处理。指令的存放加载到寄存器的指令同样是数字形式。五、高级语言与编译器高级语言用更抽象的方式描述程序行为不直接依赖于特定CPU或指令集。编译器的作用将高级语言程序源代码翻译成计算机可直接执行的机器语言指令。选用合适的编译器或编译器集合可以把同一份高级语言代码转换成适合不同CPU的机器语言程序。六、C语言标准UNIX实现提供的C库逐渐成为事实上的“标准库”随后由官方标准化ANSI/ISO C 标准C89/C90首次正式定义了C语言语法和C标准库。C99 标准新增了行注释、可变长数组、内联函数等特性。C11 标准增加了多线程支持、匿名结构体/联合体等。七、使用C语言的7个步骤定义程序目标明确程序要完成什么功能需求是什么。设计程序用流程图、伪代码或结构图规划程序架构。编写代码在编辑器中将设计转换为C语言源文件。编译与链接编译器将源代码转为机器码检查语法有效性。链接器合并目标代码、标准启动代码和库函数生成可执行文件。运行程序在目标系统上执行生成的可执行文件。测试与调试程序验证程序逻辑正确性排除语义错误和运行时错误。维护与修改代码根据需求变化或发现的缺陷进行迭代改进。八、编程机制编译与链接详解8.1 目标文件、可执行文件与库C实现的流程源代码经过编译和链接两步生成可执行程序。目标文件.o或.obj包含机器语言代码但不可直接运行。启动代码充当程序与操作系统的接口负责初始化环境后调用main函数。链接器将目标代码、系统的标准启动代码和所需的库函数代码合并形成完整的可执行文件。8.2 在UNIX系统上的编译与处理编辑源代码如prog.c。使用cc命令编译cc prog.c链接器生成可执行文件通常为a.out并自动删除中间目标文件.o。8.3 GNU编译器集合GCC与LLVM项目GNU项目致力于开发大量自由软件的集合GCC是其核心产物之一。GCC支持多种硬件平台和操作系统可通过-stdc99、-stdc11等选项指定C标准。LLVM项目与编译器相关的开源软件集合前端工具clang可编译C代码同样支持多标准。两者均可在类UNIX及Windows通过MinGW等下使用。8.4 Linux系统中的C编译Linux系统原生支持GCC编译过程与UNIX类似gcc source.c -o program8.5 PC命令行编译器在Windows下可通过MinGW或Cygwin获得GCC命令行环境。使用gcc命令编译源文件生成.exe可执行程序。8.6 集成开发环境IDEWindows常用IDEVisual Studio、Code::Blocks、Dev-C 等。IDE内部封装了编辑、编译、链接、调试等工具提供图形化界面简化开发流程。8.7 Macintosh中的CXcodemacOS上的主要开发环境集成了编辑器、clang/gcc编译器和调试器。也可通过终端直接调用clang或gcc命令进行编译。总结C语言凭借其高效、灵活和可移植等优势历经数十年仍在系统编程、嵌入式等领域占据重要地位。理解其起源、标准化历程、编译链接机制以及开发步骤是学好C语言、写好C程序的坚实基础。