第二章 C语言概述与开发环境

C语言诞生于1972年的贝尔实验室,由Dennis Ritchie在B语言基础上设计而成。它最初是为了重写UNIX操作系统而开发,却意外成为计算机科学史上最具影响力的编程语言之一。半个世纪过去,C语言依然活跃在操作系统内核、嵌入式系统、数据库引擎和高性能计算领域。对于计算机二级考生而言,理解C语言的历史脉络、程序结构以及开发工具的使用,是迈入编程世界的第一级台阶。本章将系统梳理这些基础内容,并带领你完成第一个C程序的编写与运行。

C语言知识框架与开发流程 C语言概述 • 1972年诞生于贝尔实验室 • 面向过程的高级语言 • 高效、灵活、可移植 • 指针与内存管理 • 广泛用于系统级开发 C程序结构 • 预处理指令 (#include) • 全局声明区 • main() 主函数 • 函数定义与调用 • 语句与注释 开发环境 • Visual C++ 6.0 • Dev-C++ 5.11 • Code::Blocks • GCC / Clang • 在线编译器 编写 编译 运行 调试 开发流程: 编辑源代码 (.c) → 预处理 → 编译 (.obj) → 链接 (.exe) → 运行调试 常见误区与注意事项: 1. 忘记写 main 函数或拼写错误(如写成 mian) 2. 每条语句末尾缺少分号 (;) 3. 使用中文标点符号(如;,())导致编译错误

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等预处理指令实现宏定义和文件包含。
知识结构表:C语言版本演进
版本发布年份主要特性考试要求
K&R C1978基础语法、指针、结构体了解
C89/ANSI C1989函数原型、const关键字、标准库掌握
C991999//注释、可变长数组、stdint.h了解
C112011多线程支持、泛型选择了解

判断方法:如何识别C语言程序

一个标准的C语言源文件通常以.c为扩展名,其内容由预处理指令、函数定义和全局变量声明组成。判断一段代码是否为C语言,可以从以下特征入手:

  1. 是否存在#include或#define预处理指令;
  2. 是否包含一个名为main的函数作为程序入口;
  3. 语句是否以分号结尾,是否使用花括号{}划分代码块;
  4. 是否支持指针类型声明(如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可执行文件链接器合并目标文件、解析外部引用
经验提醒:在Visual C++ 6.0中,按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安装步骤

  1. 从官网或镜像站下载devcpp-5.11-setup.exe(约48MB);
  2. 双击安装包,选择简体中文,点击"OK";
  3. 接受许可协议,选择安装路径(建议默认C:\Dev-Cpp);
  4. 选择组件时保持默认,等待安装完成;
  5. 首次启动时,选择"简体中文"并配置主题;
  6. 在"工具→编译器选项"中,确认编译器路径为C:\Dev-Cpp\MinGW64\bin\gcc.exe。

案例拆解:第一个C程序——"Hello World"

下面通过一个完整案例演示从新建文件到运行输出的全过程。

场景与目标:在Dev-C++中编写一个程序,在屏幕上输出"Hello, C Language!",并验证开发环境配置正确。

操作步骤:

  1. 打开Dev-C++,点击"文件→新建→源代码"(或按Ctrl+N);
  2. 在编辑器中输入以下代码:
#include <stdio.h>

int main() {
    printf("Hello, C Language!\n");
    return 0;
}
  1. 点击"文件→保存"(Ctrl+S),文件名输入hello.c,保存类型选择"C source files (*.c)";
  2. 按F9编译并运行,弹出控制台窗口显示输出结果;
  3. 如果编译出错,双击错误信息可跳转到对应代码行进行修改。

结果验证:控制台输出Hello, C Language!,程序返回0,说明环境配置成功。

风险提示:如果使用Visual C++ 6.0,需注意其默认不支持C99标准,//注释虽可用但不推荐在考试中使用;同时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函数末尾无returnreturn 0;程序返回随机值

总结复盘:本章核心要点

  • C语言诞生于1972年,由Dennis Ritchie设计,用于UNIX系统开发;
  • C语言具有高效、灵活、可移植、面向过程四大特点;
  • 一个C程序由预处理指令、全局声明、函数定义三大部分组成,main是程序入口;
  • 编译过程分为预处理→编译→汇编→链接四个阶段;
  • Dev-C++和Visual C++ 6.0是二级考试最常用的IDE,需熟练掌握新建、编译、运行快捷键;
  • 编写第一个程序时,注意头文件包含、主函数签名、语句分号和英文标点四个关键点。
实战建议:初学者应在课后独立完成至少3个程序的编写与运行:Hello World、两数相加、输出个人信息。每次编写后,尝试故意制造一个语法错误,观察编译器的报错信息,这能帮助你快速理解C语言的语法规则。