[C.C++] C Primer Plus——第一章 初识C语言

34 0
Honkers 7 小时前 | 显示全部楼层 |阅读模式

一、C语言的起源

  • 时间/地点:1972年,贝尔实验室。
  • 设计者:丹尼斯·里奇(Dennis Ritchie)与肯·汤普逊(Ken Thompson)。
  • 背景:为开发UNIX操作系统而设计。
  • 前身:在汤普逊发明的B语言基础上,增加了数据类型等特性,发展出C语言。

二、选择C语言的理由

  1. 设计特性
    • 融合了计算机科学理论与实践的精华。
    • 支持自顶向下的规划、结构化编程和模块化设计。
  2. 高效性
    • 生成的目标代码紧凑、运行速度快,接近汇编语言效率。
  3. 可移植性
    • 程序稍作修改或无需修改即可在不同平台编译运行。
  4. 强大而灵活
    • 许多编译器和解释器本身就用C语言编写。
    • 常用于操作系统、嵌入式系统等底层开发。
  5. 面向程序员
    • 允许直接访问硬件、操控内存中的位和地址。
    • 提供了丰富的运算符和控制结构。
  6. 缺点
    • 指针操作复杂,容易引发内存错误。
    • 某些运算符优先级不易记忆,需要编码时谨慎。

三、C语言的应用范围

  • UNIX/Linux 操作系统:内核与大量系统工具。
  • 嵌入式系统:单片机、家电、汽车电子等。
  • 计算机游戏:游戏引擎、高性能核心模块。
  • 机器人工程:运动控制、传感器处理。
  • PC应用:办公软件、图形图像处理工具等。
  • 计算机语言实现:很多高级语言的编译器和解释器由C开发。

四、计算机能做什么(基础概念)

  • CPU的工作:不断从内存中获取指令并执行。
  • 内部小工作区:由若干寄存器组成,用于暂存数据和地址。
  • 一切皆数字:计算机中的数据和指令均以二进制数字形式存储和处理。
  • 指令的存放:加载到寄存器的指令同样是数字形式。

五、高级语言与编译器

  1. 高级语言
    • 用更抽象的方式描述程序行为,不直接依赖于特定CPU或指令集。
  2. 编译器的作用
    • 将高级语言程序(源代码)翻译成计算机可直接执行的机器语言指令。
    • 选用合适的编译器或编译器集合,可以把同一份高级语言代码转换成适合不同CPU的机器语言程序。

六、C语言标准

UNIX实现提供的C库逐渐成为事实上的“标准库”,随后由官方标准化:

  1. ANSI/ISO C 标准(C89/C90)
    • 首次正式定义了C语言语法和C标准库。
  2. C99 标准
    • 新增了行注释、可变长数组、内联函数等特性。
  3. C11 标准
    • 增加了多线程支持、匿名结构体/联合体等。

七、使用C语言的7个步骤

  1. 定义程序目标 :明确程序要完成什么功能,需求是什么。
  2. 设计程序:用流程图、伪代码或结构图规划程序架构。
  3. 编写代码:在编辑器中将设计转换为C语言源文件。
  4. 编译与链接
    • 编译器将源代码转为机器码,检查语法有效性。
    • 链接器合并目标代码、标准启动代码和库函数,生成可执行文件。
  5. 运行程序:在目标系统上执行生成的可执行文件。
  6. 测试与调试程序:验证程序逻辑正确性,排除语义错误和运行时错误。
  7. 维护与修改代码:根据需求变化或发现的缺陷进行迭代改进。

八、编程机制:编译与链接详解

8.1 目标文件、可执行文件与库

  • C实现的流程:源代码经过编译和链接两步生成可执行程序。
  • 目标文件(.o 或 .obj):包含机器语言代码,但不可直接运行。
  • 启动代码:充当程序与操作系统的接口,负责初始化环境后调用 main 函数。
  • 链接器:将目标代码、系统的标准启动代码和所需的库函数代码合并,形成完整的可执行文件。

8.2 在UNIX系统上的编译与处理

  • 编辑源代码(如 prog.c)。
  • 使用 cc 命令编译:
    1. cc prog.c
    复制代码
  • 链接器生成可执行文件(通常为 a.out),并自动删除中间目标文件(.o)。

8.3 GNU编译器集合(GCC)与LLVM项目

  • GNU项目:致力于开发大量自由软件的集合,GCC是其核心产物之一。
  • GCC:支持多种硬件平台和操作系统,可通过 -std=c99、-std=c11 等选项指定C标准。
  • LLVM项目:与编译器相关的开源软件集合,前端工具 clang 可编译C代码,同样支持多标准。
  • 两者均可在类UNIX及Windows(通过MinGW等)下使用。

8.4 Linux系统中的C编译

Linux系统原生支持GCC,编译过程与UNIX类似:

  1. gcc source.c -o program
复制代码

8.5 PC命令行编译器

  • 在Windows下可通过 MinGWCygwin 获得GCC命令行环境。
  • 使用 gcc 命令编译源文件,生成 .exe 可执行程序。

8.6 集成开发环境(IDE)

  • Windows常用IDE:Visual Studio、Code::Blocks、Dev-C++ 等。
  • IDE内部封装了编辑、编译、链接、调试等工具,提供图形化界面,简化开发流程。

8.7 Macintosh中的C

  • Xcode:macOS上的主要开发环境,集成了编辑器、clang/gcc 编译器和调试器。
  • 也可通过终端直接调用 clang 或 gcc 命令进行编译。

总结

C语言凭借其高效、灵活和可移植等优势,历经数十年仍在系统编程、嵌入式等领域占据重要地位。理解其起源、标准化历程、编译链接机制以及开发步骤,是学好C语言、写好C程序的坚实基础。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行