第二章 C语言概述与开发环境
C语言诞生于1972年的贝尔实验室,由Dennis Ritchie在B语言基础上设计而成。它最初是为了重写UNIX操作系统而开发,却意外成为计算机科学史上最具影响力的编程语言之一。半个世纪过去,C语言依然活跃在操作系统内核、嵌入式系统、数据库引擎和高性能计算领域。对于计算机二级考生而言,理解C语言的历史脉络、程序结构以及开发工具的使用,是迈入编程世界的第一级台阶。本章将系统梳理这些基础内容,并带领你完成第一个C程序的编写与运行。
2.1 C语言发展历史与特点
核心原理:从B语言到C语言的演进
1969年,Ken Thompson在贝尔实验室开发了B语言,用于编写UNIX操作系统。B语言是一种无类型的解释型语言,运行效率较低。1972年,Dennis Ritchie在B语言的基础上引入类型系统,设计了C语言。C语言保留了B语言简洁、贴近硬件的特性,同时增加了结构体、指针运算等强大功能。1978年,Brian Kernighan和Dennis Ritchie出版了经典著作《The C Programming Language》,即"K&R C",成为事实标准。1989年,美国国家标准协会(ANSI)发布了C语言标准(ANSI C / C89),1999年和2011年又分别发布了C99和C11标准。
C语言的核心特点可以概括为以下几点:
- 高效性:C语言生成的机器码执行效率高,仅比汇编语言慢10%-20%,远快于Java、Python等高级语言。
- 灵活性:支持指针运算、位操作、动态内存分配,能够直接操作硬件地址。
- 可移植性:C语言标准库提供了统一的接口,同一份源代码可以在不同平台上重新编译运行。
- 面向过程:以函数为基本模块,强调数据流和控制流的组织。
- 预处理机制:通过#define、#include等预处理指令实现宏定义和文件包含。
| 版本 | 发布年份 | 主要特性 | 考试要求 |
|---|---|---|---|
| K&R C | 1978 | 基础语法、指针、结构体 | 了解 |
| C89/ANSI C | 1989 | 函数原型、const关键字、标准库 | 掌握 |
| C99 | 1999 | //注释、可变长数组、stdint.h | 了解 |
| C11 | 2011 | 多线程支持、泛型选择 | 了解 |
判断方法:如何识别C语言程序
一个标准的C语言源文件通常以.c为扩展名,其内容由预处理指令、函数定义和全局变量声明组成。判断一段代码是否为C语言,可以从以下特征入手:
- 是否存在
#include或#define预处理指令; - 是否包含一个名为
main的函数作为程序入口; - 语句是否以分号结尾,是否使用花括号
{}划分代码块; - 是否支持指针类型声明(如
int *p)。
2.2 C程序的基本结构
核心原理:一个完整C程序的组成
一个标准的C程序由以下五个部分构成,每个部分都有其特定作用:
// 1. 预处理指令
#include <stdio.h>
#define PI 3.14159
// 2. 全局变量声明
int globalCount = 0;
// 3. 函数声明(原型)
void printMessage(void);
// 4. 主函数(程序入口)
int main() {
// 5. 局部变量声明
int localVar = 10;
// 函数调用
printMessage();
return 0; // 返回状态码
}
// 5. 函数定义
void printMessage(void) {
printf("Hello, C Language!\n");
}
其中,main()函数是C程序的唯一入口。无论main函数在文件中的位置如何,程序总是从main函数的第一条语句开始执行。return 0;表示程序正常结束,返回给操作系统状态码0。
操作流程:C程序的编译与运行过程
C语言是编译型语言,源代码需要经过四个阶段才能变成可执行文件:
| 阶段 | 输入 | 输出 | 工具 | 说明 |
|---|---|---|---|---|
| 预处理 | .c源文件 | .i文件 | 预处理器 | 展开宏、包含头文件、条件编译 |
| 编译 | .i文件 | .s汇编文件 | 编译器 | 语法检查、生成汇编代码 |
| 汇编 | .s文件 | .obj目标文件 | 汇编器 | 将汇编代码转为机器码 |
| 链接 | .obj + 库文件 | .exe可执行文件 | 链接器 | 合并目标文件、解析外部引用 |
Ctrl+F7仅编译不链接,按F7完整编译链接,按Ctrl+F5运行程序。在Dev-C++中,F9编译运行,F10仅编译。
2.3 集成开发环境的安装与使用
核心原理:IDE的组成与选择
集成开发环境(IDE)将编辑器、编译器、调试器和项目管理工具整合在一起。对于计算机二级C语言考试,最常用的两个IDE是Visual C++ 6.0和Dev-C++。VC++ 6.0是考试系统默认环境,界面经典但较为老旧;Dev-C++轻量开源,支持C++11标准,更适合日常练习。
操作流程:Dev-C++ 5.11安装步骤
- 从官网或镜像站下载
devcpp-5.11-setup.exe(约48MB); - 双击安装包,选择简体中文,点击"OK";
- 接受许可协议,选择安装路径(建议默认
C:\Dev-Cpp); - 选择组件时保持默认,等待安装完成;
- 首次启动时,选择"简体中文"并配置主题;
- 在"工具→编译器选项"中,确认编译器路径为
C:\Dev-Cpp\MinGW64\bin\gcc.exe。
案例拆解:第一个C程序——"Hello World"
下面通过一个完整案例演示从新建文件到运行输出的全过程。
场景与目标:在Dev-C++中编写一个程序,在屏幕上输出"Hello, C Language!",并验证开发环境配置正确。
操作步骤:
- 打开Dev-C++,点击"文件→新建→源代码"(或按
Ctrl+N); - 在编辑器中输入以下代码:
#include <stdio.h>
int main() {
printf("Hello, C Language!\n");
return 0;
}
- 点击"文件→保存"(
Ctrl+S),文件名输入hello.c,保存类型选择"C source files (*.c)"; - 按
F9编译并运行,弹出控制台窗口显示输出结果; - 如果编译出错,双击错误信息可跳转到对应代码行进行修改。
结果验证:控制台输出Hello, C Language!,程序返回0,说明环境配置成功。
//注释虽可用但不推荐在考试中使用;同时VC++ 6.0对变量声明位置有严格要求,所有变量必须在函数开头声明。
2.4 常见误区与总结复盘
常见误区清单
| 误区类型 | 错误示例 | 正确写法 | 后果 |
|---|---|---|---|
| 主函数拼写 | void mian() | int main() | 链接错误,无法生成exe |
| 缺少分号 | printf("hi") | printf("hi"); | 编译错误 |
| 中文标点 | printf("hi"); | printf("hi"); | 编译错误 |
| 头文件缺失 | 使用printf但未#include | #include <stdio.h> | 隐式声明警告或错误 |
| return缺失 | main函数末尾无return | return 0; | 程序返回随机值 |
总结复盘:本章核心要点
- C语言诞生于1972年,由Dennis Ritchie设计,用于UNIX系统开发;
- C语言具有高效、灵活、可移植、面向过程四大特点;
- 一个C程序由预处理指令、全局声明、函数定义三大部分组成,
main是程序入口; - 编译过程分为预处理→编译→汇编→链接四个阶段;
- Dev-C++和Visual C++ 6.0是二级考试最常用的IDE,需熟练掌握新建、编译、运行快捷键;
- 编写第一个程序时,注意头文件包含、主函数签名、语句分号和英文标点四个关键点。