具体描述
C语言是在当今软件开发领域有着十分广泛应用的一种语言。本书全面地介绍了C语言的基本概念,C语言的数据类型、语句及结构特点,系统地讲述了C语言程序设计的基本方法和技巧。对面向对象程序设计及 C++的编程技术也作了初步阐述。
全书选材先进,内容丰富,讲述力求理论联系实际、深入浅出、循序渐进,注重培养读者的程序设计能力以及良好的程序设计风格和习惯。
本书可作为高等院校计算机程序设计的教学用书,也可作为从事计算机应用的科技人员的参考书及培训教材。本书配有CAI教学课件。
为了配合本书的学习,作者还编写了与本书配套的《C语言程序设计上机指导与习题选解(第2版•修订版)》,可供读者学习时参考使用。
作者简介
目录信息
1.1 程序与程序设计语言
1.1.1 程序的基本概念
1.1.2 程序设计语言
1.2 算法及其描述
1.2.1 算法的概念
1.2.2 算法的描述方法
1.3 C语言的发展及特点
1.3.1 C语言的发展概况
1.3.2 C语言的特点
1.4 C语言程序的基本结构
1.5 C语言字符集、标识符与关键字
1.5.1 C语言字符集
1.5.2 标识符与关键字
1.6 C语言程序的开发环境
1.6.1 Turbo C 2.0 介绍
1.6.2 源程序输入
1.6.3 编译、连接与运行
习题1
第 2 章 C语言的基本数据类型与表达式
2.1 C语言的基本数据类型
2.1.1 数据类型概述
2.1.2 整数类型
2.1.3 实数类型
2.1.4 字符类型
2.2 常量与变量
2.2.1 常量与符号常量
2.2.2 变量与变量定义
2.3 运算符与表达式
2.3.1 算术运算符与算术表达式
2.3.2 赋值运算符与赋值表达式
2.3.3 逗号运算符和求字节运算符
2.3.4 条件运算符
2.4 数据类型转换
2.4.1 类型自动转换
2.4.2 赋值转换
2.4.3 强制类型转换
习题2
第 3 章 顺序结构程序设计
3.1 C语言的基本语句
3.1.1 简单语句
3.1.2 复合语句
3.2 数据输入与输出
3.2.1 字符输入输出函数
3.2.2 格式输出函数printf
3.2.3 格式输入函数scanf
3.3 程序举例
习题3
第 4 章 选择结构程序设计
4.1 关系运算符与关系表达式
4.1.1 关系运算符
4.1.2 关系表达式
4.2 逻辑运算符与逻辑表达式
4.2.1 逻辑运算符
4.2.2 逻辑表达式
4.3 if语句
4.3.1 单分支if语句
4.3.2 双分支if语句
4.3.3 多分支选择结构
4.3.4 if语句的嵌套
4.4 switch语句
4.5 结构嵌套程序举例
习题4
第 5 章 循环结构程序设计
5.1 while 语句
5.2 dowhile语句
5.3 for语句
5.3.1 for语句的一般形式
5.3.2 for语句中的各表达式含义
5.3.3 for语句与while 语句的比较
5.3.4 for语句的变形
5.4 break、continue和goto语句
5.4.1 break语句
5.4.2 continue语句
5.4.3 goto语句
5.5 循环的嵌套
5.6 复合结构程序举例
习题5
第 6 章 函数与编译预处理
6.1 模块化程序设计与函数
6.1.1 模块与函数
6.1.2 模块设计原则
6.1.3 算法描述简介
6.2 函数的定义与调用
6.2.1 标准库函数
6.2.2 函数的定义
6.2.3 函数的调用
6.2.4 参数的传递
6.3 函数的递归调用
6.4 变量作用域与存储方式
6.4.1 变量的作用域
6.4.2 变量的存储方式
6.5 编译预处理
6.5.1 宏定义
6.5.2 文件包含
6.5.3 条件编译
6.6 函数设计举例
习题6
第 7 章 数组
7.1 一维数组
7.1.1 一维数组的定义
7.1.2 一维数组元素的引用
7.1.3 一维数组的存储结构与初始化
7.2 二维数组
7.2.1 二维数组的定义
7.2.2 二维数组元素的引用
7.2.3 二维数组的存储
7.2.4 二维数组的初始化
7.3 数组的应用
7.4 字符数组与字符串
7.4.1 字符数组的定义与初始化
7.4.2 字符串的概念及存储
7.4.3 字符串的输入与输出
7.4.4 字符串处理函数
7.5 数组作为函数的参数
7.6 程序举例
习题7
第 8 章 指针
8.1 指针与指针变量
8.1.1 指针的概念
8.1.2 指针变量的定义与初始化
8.1.3 指针运算
8.1.4 多级指针
8.2 指针与函数
8.2.1 指针作为函数参数
8.2.2 指针函数
8.2.3 指向函数的指针
8.3 指针与数组
8.3.1 指向一维数组的指针
8.3.2 二维数组与多维数组的指针表示法
8.4 指针与字符串
8.4.1 字符串的指针表示法
8.4.2 字符串数组
8.5 指针数组与命令行参数
8.5.1 指针数组
8.5.2 指针数组与命令行参数
8.6 程序举例
习题8
第9章 结构体数据类型与链表
9.1 结构体类型的定义
9.2 结构体类型变量
9.2.1 结构体类型变量的定义
9.2.2 结构体变量的使用
9.2.3 结构体变量的初始化
9.2.4 结构体变量的输入与输出
9.3 结构体类型数组
9.3.1 结构体类型数组的定义
9.3.2 结构体类型数组的初始化
9.3.3 结构体数组的使用
9.4 结构体类型指针
9.4.1 指向结构体变量的指针
9.4.2 指向结构体数组元素的指针
9.5 结构体与函数
9.5.1 结构体变量作为函数参数
9.5.2 指向结构体变量的指针作为函数参数
9.5.3 函数的返回值为结构体类型
9.6 链表
9.6.1 链表概述
9.6.2 内存动态管理函数
9.6.3 链表的基本操作
9.7 程序举例
习题9
第10章 共用体与枚举类型
10.1 共用体类型与共用体变量
10.2 共用体变量的引用
10.3 共用体变量的应用
10.4 位运算与位段结构
10.4.1 位运算
10.4.2 位段结构
10.5 枚举类型
10.6 类型定义
习题10
第 11 章 文件
11.1 文件概述
11.1.1 文件
11.1.2 数据文件的存储形式
11.1.3 标准文件与非标准文件
11.1.4 文件存取方式
11.2 标准文件操作
11.2.1 标准文件FILE结构指针
11.2.2 标准文件的打开操作
11.2.3 关闭标准文件
11.2.4 标准文件读写操作
11.2.5 标准文件的随机读写
11.3 非标准文件操作
11.3.1 建立非标准文件
11.3.2 非标准文件打开和关闭
11.3.3 非标准文件的读写
习题11
第 12 章 C语言综合应用程序示例
12.1 多模块编程方法
12.1.1 程序模块组织
12.1.2 模块之间的通信
12.1.3 包含文件.h的应用
12.2 图形处理应用
12.2.1 基本图形处理库函数
12.2.2 图形处理库函数应用示例
12.3 操作系统接口应用
12.3.1 DOS 操作系统简介
12.3.2 操作系统接口库函数
12.3.3 鼠标及其应用
12.4 C语言与汇编语言混合编程
12.4.1 汇编语言子程序的一般格式
12.4.2 全局变量的传递
12.4.3 参数和返回值的传递
12.4.4 汇编语言子程序的汇编及与C程序的连接
12.4.5 内嵌汇编指令的C 程序结构
12.4.6 内嵌汇编指令的C 程序的编译和连接
12.5 综合应用程序示例——汉字显示技术
12.5.1 汉字显示的基本原理
12.5.2 西文DOS环境下的汉字显示
习题12
第 13 章 C++基础
13.1 C++概述
13.2 C++对C语言的扩充
13.2.1 C++ 的输入输出
13.2.2 C++ 的行注释
13.2.3 const常量定义与使用
13.2.4 局部变量的定义与全局变量的作用域运算符
13.2.5 变量的引用
13.2.6 函数重载
13.2.7 带默认参数的函数
13.2.8 内联函数
13.2.9 new和delete算符
13.3 C++面向对象程序设计
13.3.1 类与对象
13.3.2 构造函数与析构函数
13.3.3 静态成员
13.3.4 友元
13.3.5 运算符重载
13.3.6 继承与派生
13.3.7 多态性与虚函数
13.3.8 I/O流类库与文件输入/输出
13.3.9 模板
13.3.10 异常处理
13.4 应用举例
习题13
附录Ⅰ ASCII字符编码一览表
附录Ⅱ 运算符的优先级别和结合方向一览表
附录Ⅲ Turbo C库函数
附录Ⅳ 图形模式表
附录Ⅴ 鼠标功能的编号及其作用
附录Ⅵ 鼠标驱动程序的常用功能及其参数
参考文献
· · · · · · (收起)
读后感
用户评价
这本书给我的整体感觉,是一种“克制而深刻”的美学体现。它没有炫耀作者的知识深度,而是专注于如何有效地将知识传递给目标读者。语言风格上,它避免了学术论文的枯燥和网络教程的碎片化,用一种非常平实的、像是良师益友的口吻进行叙述。我注意到书中有一个非常独特的处理方式,就是对“错误处理”的重视。在很多基础教程中,错误处理常常被一笔带过,认为那是高级主题。但这本书在讲解文件读写、内存分配等关键操作时,都详细列举了如何检查返回值、如何使用`errno`,甚至如何优雅地退出程序。这种对鲁棒性(Robustness)的早期培养,对于培养一个严谨的程序员至关重要。我曾尝试用这本书的内容去指导一位刚接触编程的朋友,发现他对于异常流程的控制理解得比我当年自学时要深刻得多。这充分说明了这本书在教学深度和广度上的平衡把握得非常到位。
这本《C语言程序设计教程》简直是为我这种编程小白量身定做的!我之前学过一些别的语言的皮毛,但每次想深入接触C语言,都被那些复杂的指针和内存管理绕晕了头。这本书的讲解方式非常温和,像是旁边有个经验丰富的大神手把手带着你走。它不像有些教材上来就堆砌晦涩的理论,而是用大量的、贴近实际应用的例子来解释每一个概念。尤其是对“结构体”和“文件操作”那两个章节,作者的叙述清晰得让人拍案叫绝。我记得有个地方讲到动态内存分配,我以前总是搞不清 `malloc` 和 `free` 什么时候该用,用多少,这本书里通过一个简单的学生信息管理系统的例子,把整个生命周期讲解得透彻无比,甚至还包含了常见的内存泄漏排查思路。学完这部分,我终于不再对C语言的底层机制感到恐惧了。它没有过度拔高,而是扎扎实实地把基础知识点打牢,确保读者能真正“上手”而不是“看懂了”。对于想从零开始构建扎实C语言基础的自学者来说,这本书的实用价值远超它的定价。
作为一名已经工作多年的软件工程师,我偶尔也会回头翻阅基础教材,以防自己被日常的框架和工具蒙蔽了双眼。这本《C语言程序设计教程》就成了我工具箱里的一件“校准器”。它的精妙之处在于,它没有把C语言仅仅当作一门“过时的语言”来介绍,而是将其定位为理解所有现代编程范式的基石。书里对于“函数调用栈”的图示讲解,精确到了寄存器级别的概念映射,虽然看起来有点深入,但对于理解递归、尾调用优化等高级主题至关重要。我发现,很多我以前只能靠经验猜测的行为,在这本书的系统性梳理下,都找到了明确的理论支撑。它教会我的不是如何快速实现某个功能,而是如何在底层逻辑上构建一个高效、可靠的程序骨架。对于那些想跳出“API调用者”身份,真正想成为“底层构建者”的资深学习者,这本书提供了一个绝佳的重新审视C语言的机会,其内容的密度和启发性,绝对值得反复研读。
说实话,市面上关于C语言的书籍多如牛毛,很多都带着一种陈旧的气息,或者堆砌了太多不适用于现代开发环境的过时技巧。但这本《C语言程序设计教程》在保持C语言核心精髓的同时,在示例代码的选择上显得格外“与时俱进”。它虽然教授的是基础的C语言,但它介绍的很多编程思想,比如模块化设计和接口抽象,其实是面向对象思想的前奏。我用这本书学习了大约两个月,感觉自己的编程思维得到了一个质的飞跃。它不仅仅是教你怎么写出能运行的代码,更重要的是在潜移默化中培养你如何“思考”一个程序。举个例子,它在讲解指针运算时,不仅仅是教你如何计算地址偏移,还穿插了对数组在内存中连续存储的深入剖析,这种对底层原理的尊重,让我在后续学习操作系统或者嵌入式编程时,有了坚实可靠的后盾。对于那些期望未来能从事系统底层开发的读者来说,这本书的价值是无法估量的。
初看这本书,我最大的感受是它的结构安排极其合理,简直可以称得上是教科书级别的典范。它没有急于展示那些炫酷的高级特性,而是稳健地从最基础的编译原理、数据类型开始铺陈。我尤其欣赏它在每一章末尾都设置了“疑难点剖析”环节,这部分内容非常精妙,它抓住了大多数初学者在学习过程中最容易卡住的地方,比如`const`修饰符的微妙区别,或者`static`变量在不同作用域下的表现。这种预判式的教学设计,极大地减少了读者在阅读过程中的“顿悟”成本。这本书的排版也极为友好,代码块的格式化非常规范,注释详尽却不冗余,让人在阅读代码时能够保持心流。我对比过好几本同类书籍,很多都是把理论讲完就扔给你一堆练习题,这本书则是在讲解完一个模块后,会立即跟进一个小型项目演示,比如一个小型的命令行计算器或者简单的学生成绩录入系统,这种即学即用的模式,极大地增强了学习的成就感和连贯性。