图书前言

前言

C语言是国内外应用最为广泛的计算机高级语言之一。凭借其出色的硬件操控能力和极高的执行效率,C语言已成为现代软件基础设施的基石——绝大多数操作系统的内核、底层的机电控制与设备驱动程序,乃至诸多主流编程语言的解释器与编译系统,均主要由C语言实现。

1991年,作者所著的《C程序设计》由清华大学出版社出版。该书出版后,许多读者说,“C语言原来是比较难学的,但自从《C程序设计》出版后,C语言变得不难学了。”该书经历了逾千所高校的教学实践和千万读者的检验,被公认为学习 C程序设计的经典教材。35年来,《C程序设计》已改版5次,重印300多次,累计发行逾2000万册,创国内外计算机类书籍发行的最高纪录,荣获多项国家级和省部级奖项。2021年 10 月,国家教材委员会发布《关于首届全国教材建设奖奖励的决定》,公布了全国优秀教材奖励名单,这是我国教材工作领域的最高奖项,《C 程序设计》(第五版)荣获“全国优秀教材(高等教育类)一等奖”。

作者到全国各高校和各企事业单位访问时,许多在校师生和已毕业参加工作的人士都说他们学过《C 程序设计》,印象很深,作者深切地感受到广大读者的殷切期望。各校师生普遍认为该书内容系统,讲解详尽,是学习 C 语言程序设计的理想教材。同时也有的学校提出,由于各校情况不完全相同,希望在保持原有优点的基础上,能提供适用于不同要求的版本。作者和出版社征求了多方面的意见,进行了反复的研究,除了继续出版和完善《C 程序设计》以外,还针对广大普通高等院校的教学要求,于 2007年出版了《C 程序设计教程》(即本书),作为《C 程序设计》的姊妹篇。本书在保留《C程序设计》一书全部优点的基础上,紧扣基本要求,适当精简内容,突出重点,减少篇幅。出版后受到广泛欢迎,读者普遍认为内容适当,概念清晰,用通俗易懂的方法和语言阐述清楚复杂的概念,便于学习。本书被教育部评为普通高等教育“十一五”国家级规划教材,向全国各高校推荐。

经过十多年的教学实践,作者对《C程序设计教程》一书进行过多次修订。现在又进行一次新的修订,在修订的过程中,作者思考了以下几方面的问题。

1. 学习计算机编程的目的

苹果公司创始人史蒂夫·乔布斯曾说过,“所有人都应该学计算机编程,因为它教你如何思考。”作者颇为赞同这一观点。在AI时代,不仅计算机专业的学生应该学编程,所有希望发挥自己聪明才智的人都应该学编程。编程是将宏观构想拆解为细小、无歧义指令的过程,这种思维拆解训练能极大地提升我们将抽象想法付诸实践的能力。无论职业方向如何,编程赋予我们的严谨的逻辑思维,都是一种通用的底层能力,对各类工作皆有深远助益。在AI时代,编程思维的权重不降反升。虽然自然语言接口降低了交互门槛,但程序逻辑仍是AI的基石。要深层理解AI机理并精准应用,逻辑构建能力依然是核心。面对AI生成内容真伪难辨的挑战,逻辑思维已成为人机协作的底层协议,是跨越智能鸿沟的唯一通路。

2. C语言是最独特的高级语言

作为最早的高级语言之一,C语言具有许多独到之处。C语言与UNIX几乎同时问世并相互成就。通过C语言重写,UNIX突破了硬件依赖,开创了跨平台操作系统的先河。而C语言也成为UNIX系统中的首选高级语言。此后,众多操作系统与高性能软件皆以C语言为基石构建,或全盘采用,或核心调用。

C语言不仅是系统开发的基石,更是一门全能的通用语言,广泛覆盖从操作系统到各类应用软件的开发。在高性能计算的关键领域,其优势更是无可替代。作为众多技术的“底层内核”,绝大多数AI核心算法,以及其他语言的编译器与解释器均由C语言构建。以近年大火的Python语言为例,其解释器核心便建立在C语言之上。因此,掌握C语言无异于打通了编程的“任督二脉”,再涉猎其他语言时,自然会更加得心应手。

3. 算法与数据结构

程序设计的核心,在于算法与数据结构的深度融合。从基础运算到前沿AI,计算机的一切逻辑最终都可还原为0与1的数学运算。而将现实问题抽象为数学模型并求解的方法,便是程序设计的灵魂——算法。解决同一问题往往存在多条路径,不同算法在计算量上的差异可能是天壤之别,这便是“算法复杂性”。低复杂度的算法意味着更高的执行效率,但这往往违背人类的直觉经验,因此需要系统性的思维训练。与此同时,数据结构研究的是如何高效组织数据,以配合算法运行。面对海量信息,合理的数据结构是算法准确、高效执行的基石。二者互为表里,相得益彰,共同构成了程序设计的双翼。如果以音乐来比喻,算法与数据结构就是音乐的旋律与节拍,而编程语言则是乐器,编程技能就如同演奏乐器的技巧。要演奏优美的音乐,旋律、节拍、乐器与演奏技巧缺一不可。程序设计亦是如此,算法、数据结构、语言与编程技巧都不可或缺,四者相辅相成,方能成就优秀的软件。

4. 本次修订版的特点

本次修订延续了本书概念清晰、通俗易懂的风格,并着重体现以下几方面特点:

(1)根据C23标准进行介绍。本书依据 C23 标准更新并修正了核心概念。在编译系统方面,兼顾GCC与MSVC (Visual Studio 2022) 对新标准的支持与兼容性。同时,基于 C23 标准重构了函数声明与枚举底层类型的表述,并补充了宽字符基础内容。

(2)加强算法,强化解题思路。在各章中由浅入深地结合例题介绍各种典型的算法。 对穷举、递推、迭代、递归、排序(包括比较交换法、选择法、起泡法)、矩阵运算、字符处理应用等算法作了详尽的介绍,对难度较大的链表处理算法的思路作了清晰说明,使读者逐步建立算法思维。

(3)对指针作了更明确详尽的说明。指针是学习 C 语言的重点,也是难点。不少读者反映难以掌握指针的实质和应用。指针的本质是内存地址及其关联的数据类型。通过指针,程序可动态且灵活地访问内存,实现诸多其他高级语言难以完成的底层操作。

(4)更加通俗易懂,容易学习。作者充分考虑广大初学者的情况,精心设计体系,适当降低门槛,便于读者入门。尽量少用深奥难懂的专业术语,用通俗易懂的方法和语言阐述清楚复杂的概念,使复杂的问题简单化。没有学过计算机原理和高等数学的读者完全可以掌握本书的内容。本书便于自学,具有高中以上文化水平的人,即使没有教师讲解,也能基本掌握本书的内容。这样就有可能做到:教师少讲,提倡自学,上机实践。书中有的章节可作为自学或选学内容。

本书配备丰富的立体化教学资源,包括辅助教材、AI智能体、AI助教、微课视频、教学课件、教学大纲、电子教案、程序源码及在线题库等。为方便读者实践,同步配置了支持C23标准的云端C/C++运行环境,无需本地安装,打开浏览器即可编码。资源下载提示

 教学课件、教学大纲、电子教案:登录清华大学出版社官网,搜索书名即可下载。

 AI智能体、AI助教:扫描本书目录页中相应的二维码使用。

 在线自测题:扫描封底的“作业系统”二维码,再扫描书中每章末的“自测题”二维码,即可在线做题并查看答案。

 微课视频、程序源码、云端运行环境:扫描封底的“文泉云盘”防盗码,再扫描本书目录页中相应的二维码,即可获得学习权限。

本书的修订工作得到编写团队部分同仁的鼎力襄助。尤需致谢:南京大学金莹教授与西北工业大学姜学锋教授,参与修订研讨,并精心研制了配套教学资源;谭亦峰高级工程师,不仅参与部分章节编写,更专为本书搭建了配套的云端C/C++运行环境。诸位专家的高情厚谊与辛勤付出,谨此敬致谢忱。

谭浩强谨识

 2026年2月于清华园