您当前的位置:首页 > C语言开发手册(典藏版) > 下载地址1
C语言开发手册(典藏版)
- 名 称:C语言开发手册(典藏版) - 下载地址1
- 类 别:计算机与网络
- 下载地址:[下载地址1]
- 提 取 码:
- 浏览次数:3
新闻评论(共有 0 条评论) |
资料介绍
C语言开发手册(典藏版)
作 者: 薛园园 等编著
出版时间:2011
内容简介
毋庸置疑,C语言从产生到现在的各个阶段,都是最重要和最流行的编程语言之一。熟悉和掌握C语言程序设计,已经成为程序员的一门必修课。本书言简意赅、通俗易懂,知识点覆盖全面,详细介绍了C语言的程序设计及最新的C语言编程技术。《C语言开发手册(典藏版)》分4篇,共29章,分别介绍了C语言基础、C语言进阶、C语言的接口技术和现代C语言的扩展。首先,介绍了C语言及其开发环境,并全面介绍了C语言的基本语法知识;接着,详细讲解了C语言的一些高级程序应用;然后,介绍了C语言与其他主流编程语言的接口;最后,讲解了现代C语言的一些扩展应用和高级技术。《C语言开发手册(典藏版)》结构安排紧凑、讲解详细、实例丰富。C语言程序设计的初学者通过本书可以快速掌握C语言程序设计方法。读者对象:本书对现代C语言程序的接口和高级技术进行了全面讲解,对具有一定开发经验的设计人员也有非常好的参考价值。本书可以作为C语言初学者的入门教材,也可作为C语言程序员的参考手册,还可作为大中专院校学生及电脑培训班的参考书。
目录
第1篇 C语言基础篇
第1章 C语言概述
C语言是现代应用最为广泛的编程语言,深受广大程序员的喜爱。本章将简要介绍C语言的产生发展、C语言的特点、标准及C语言流程等内容。并通过一个完整的例子演示C程序开发过程中的项目创建、源代码编写、编译及调试的全过程。同时,将分析C语言程序构成特点。
1.1 C语言发展历史
1.2 C语言的特点
1.2.1 C语言的基本特点
1.2.2 C语言的优点
1.2.3 C语言的缺点
1.3 C语言的标准
1.3.1 C标准概述
1.3.2 C语言的新标准
1.3.3 编译器对C标准的支持
1.4 C语言开发流程
1.4.1 功能分析
1.4.2 划分任务
1.4.3 编写源代码
1.4.4 编译和链接
1.4.5 修改源代码
1.4.6 功能测试
1.4.7 发布程序
1.4.8 维护和修改
1.5 第一个C程序
1.5.1 创建项目
1.5.2 输入源代码
1.5.3 编译链接
1.5.4 调试
1.6 C程序构成分析
1.6.1 头文件
1.6.2 主函数
1.6.3 其他组成部分
1.7 良好的编程规范
1.7.1 完备和详尽的程序注释
1.7.2 整齐的代码书写格式
1.7.3 简洁清晰的命名
1.8 C语言在不同领域的扩展应用
1.8.1 单片机方面
1.8.2 LabVIEW方面
1.8.3 LabWindows/CVI方面
1.8.4 MATLAB方面
1.8.5 JavaScript方面
1.8.6 并行计算方面
1.8.7 Linux平台
1.9 小结
第2章 典型的C语言开发环境
C语言的成功及大范围的应用也造就了丰富的C语言编译器。对于用户来说,学习C语言要紧密结合C编译器或者C集成开发环境来进行。程序员要想快速高效地开发C程序,必须首先熟悉C语言开发环境的使用。本章将介绍几种主流的C语言开发环境。
2.1 C语言开发环境简介
2.1.1 C语言开发环境的构成
2.1.2 典型的C语言开发环境
2.2 使用Turbo C开发
2.2.1 Turbo C的开发环境简介
2.2.2 Turbo C的配置文件
2.2.3 用Turbo C创建C程序
2.2.4 编译链接程序
2.2.5 运行程序
2.3 使用Visual Studio开发
2.3.1 Microsoft Visual C++的开发环境简介
2.3.2 使用Visual Studio 2008创建C程序
2.3.3 编译链接程序
2.3.4 调试运行程序
2.4 使用Dev-C++开发
2.4.1 Dev-C++的开发环境简介
2.4.2 Dev-C++开发环境的设置
2.4.3 使用Dev-C++创建C程序
2.4.4 编译和运行程序
2.4.5 升级Dev-C++
2.5 使用Code::Blocks开发
2.5.1 Code::Blocks的开发环境简介
2.5.2 Code::Blocks开发环境的设置
2.5.3 使用Code::Blocks创建C程序
2.5.4 编译运行程序
2.6 小结
第3章 C语言数据类型
应用程序一般在计算机的内存中运行,对各种数据进行操作。C语言中的数据具有不同的类型,用于不同对象的表示。数据是C语言基本的操作对象。本章将首先介绍内存中程序和数据的存储,然后将介绍C语言中各种数据类型及其特点。
3.1 数据的存储
3.1.1 内存单元
3.1.2 数据的存储
3.1.3 程序在内存中的映射
3.2 数据类型简介
3.2.1 基本类型
3.2.2 构造类型
3.2.3 指针类型
3.2.4 空类型
3.3 标识符和关键字
3.3.1 标识符
3.3.2 关键字
3.4 分隔符
3.4.1 单分隔符
3.4.2 组合分隔符
3.5 常量
3.5.1 直接常量
3.5.2 符号常量
3.6 变量
3.6.1 变量声明
3.6.2 变量初始化
3.7 整型数据
3.7.1 整型数据的声明
3.7.2 整型数据的存储
3.7.3 整型常量
3.7.4 整型数据的输入
3.7.5 整型数据的输出
3.8 字符型数据
3.8.1 字符型变量的声明
3.8.2 字符型的存储
3.8.3 字符型常量
3.8.4 转义字符
3.8.5 字符型数据的输入
3.8.6 字符型数据的输出
3.9 浮点型数据
3.9.1 浮点型数据的声明
3.9.2 浮点型数据的存储
3.9.3 浮点型常量
3.9.4 浮点型数据的输入
3.9.5 浮点型数据的输出
3.10 类型转换
3.10.1 混合运算中的类型转换
3.10.2 强制类型转换
3.11 C99新增数据类型
3.12 小结
第4章 运算符和表达式
第3章介绍了C语言中的基本数据类型,这些是C语言最基本的操作对象。而在第4章中,读者将了解到最基本的操作方法,即运算符和表达式。在C语言中,通过运算符将常量、变量等操作对象组成表达式,而后,由表达式进一步构成C语句。可以说,运算符和表达式是C语言中最基本的操作方法。
4.1 运算符
4.1.1 运算符概述
4.1.2 算术运算符
4.1.3 赋值运算符
4.1.4 关系运算符
4.1.5 逻辑运算符
4.1.6 条件运算符
4.1.7 位运算符
4.1.8 其他运算符
4.1.9 运算符优先级和结合性
4.2 表达式
4.2.1 算术表达式
4.2.2 赋值表达式
4.2.3 逗号表达式
4.2.4 关系和逻辑表达式
4.3 小结
第5章 C语句及流程控制结构
第4章介绍了C语言中的运算符和表达式,这些是构成C语句的基本单元。C语句,即C语言中的操作命令,用于使计算机完成特定的功能。一条完整的语句必须以";"结束。C语言的源程序是由一系列的语句组成的,这些语句可以完成变量声明、赋值和控制输入/输出等操作。由于计算机能识别的是机器指令,因此,编译系统将一条语句转换成若干条机器指令来执行。C语言中的语句包括说明语句、表达式语句、循环语句、条件语句、开关语句、复合语句、空语句和返回语句等,下面分别进行介绍。
5.1 说明语句
5.2 表达式语句
5.3 复合语句
5.4 循环语句
5.4.1 while循环语句
5.4.2 do…while循环语句
5.4.3 for循环语句
5.5 条件语句
5.5.1 单分支if条件结构
5.5.2 双分支if条件结构
5.5.3 阶梯式if…else…if条件结构
5.5.4 if条件结构总结
5.6 开关语句
5.7 跳转语句
5.7.1 goto跳转语句
5.7.2 break跳转语句
5.7.3 continue跳转语句
5.8 函数调用语句
5.9 空语句
5.10 返回语句
5.11 C语言的流程控制结构
5.12 小结
第6章 格式化输入/输出
使用计算机程序解决问题时,需要由用户输入数据,通过程序进行运算后,再输出结果。由此过程可以看到,程序中输入/输出占有相当重要的地位。在C语言中,所有的数据输入/输出都是由库函数完成的,因此都是函数语句。在前面各章的实例中,曾使用过printf()函数和scanf()函数进行数据的输出和输入。本章将详细介绍这两个函数的使用,同时,还将介绍其他一些用于输入和输出的函数。
6.1 格式化输出函数printf()
6.1.1 printf()函数的格式
6.1.2 printf()函数的格式字符
6.1.3 printf()函数的修饰符
6.1.4 典型的printf()函数实例
6.1.5 动态设置输出宽度和精度
6.1.6 printf()函数的返回值
6.1.7 理解输出列表
6.1.8 printf格式化输出函数综合实例
6.2 格式化输入函数scanf()
6.2.1 scanf()函数的格式
6.2.2 scanf()函数格式字符串
6.2.3 scanf()函数注意问题
6.2.4 scanf()函数的返回值
6.2.5 格式化输入函数scanf()综合实例
6.3 其他常用的输入/输出函数
6.3.1 字符读入函数getchar()
6.3.2 字符读入函数getch()
6.3.3 字符串读入函数gets()
6.3.4 字符输出函数putch()
6.3.5 字符输出函数putchar()
6.3.6 字符串输出函数puts()
6.3.7 格式化内存缓冲区输出函数sprintf()
6.3.8 格式化内存缓冲区输入函数sscanf()
6.4 小结
第7章 数组
在前面章节中介绍了C语言的基本数据类型,包括整型、字符型和实型。以这些基本数据类型为基础,C语言还提供几种构造数据类型。构造类型数据是由基本类型数据按一定规则组成的,数组就是其中一种构造数据类型。在程序中用循环结构可以很方便地处理数组。本章将详细介绍C语言中数组的使用。
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.2.5 一维数组的初始化
7.3 二维数组
7.3.1 二维数组的声明
7.3.2 二维数组的存储
7.3.3 二维数组的引用
7.3.4 二维数组的初始化
7.4 字符数组和字符串
7.4.1 一维字符串数组
7.4.2 了解字符串
7.4.3 字符串的操作函数
7.4.4 字符串的输入输出
7.4.5 二维字符串数组
7.5 多维数组
7.6 数组的基本应用
7.6.1 反转字符串
7.6.2 查找最大值
7.6.3 数据排序
7.7 小结
第8章 函数
使用C语言编程,就肯定会使用到函数。C语言允许用户使用一些编译环境自带的库函数,例如使用printf()函数输出变量的值,使用scanf()函数接收用户的输入等。合理使用库函数可以大大简化程序设计过程。同时,为了有利于程序的模块化,促进程序资源的共享。C语言也支持用户使用自定义函数。本章将详细介绍函数的概念、调用、作用域等相关知识。
8.1 函数的概念
8.1.1 什么是函数
8.1.2 函数的分类
8.1.3 函数的定义
8.1.4 main()函数
8.2 函数的工作过程
8.2.1 程序结构
8.2.2 函数执行过程
8.3 编写函数
8.3.1 函数头
8.3.2 返回类型
8.3.3 参数列表
8.3.4 函数体
8.3.5 函数原型
8.4 函数的参数
8.4.1 形参和实参
8.4.2 参数传递过程
8.4.3 值调用
8.4.4 引用调用
8.4.5 数组作为函数参数
8.4.6 指针作为函数参数
8.4.7 main()函数的参数
8.5 函数调用
8.5.1 函数调用方式
8.5.2 被调函数的说明
8.5.3 函数的返回值
8.6 几种典型的函数调用形式
8.6.1 赋值调用与引用调用
8.6.2 嵌套调用
8.6.3 递归调用
8.7 函数及其变量的作用域
8.7.1 函数的作用域
8.7.2 函数的变量作用域
8.8 小结
第9章 指针
指针是C语言中广泛使用的一种数据类型。利用指针可以操作各种基本的数据类型,以及数组等复合数据结构,甚至使用指针还可以访问函数。正确理解和使用指针对于成功进行C语言程序设计是至关重要的。
指针是C语言最显著的特征,同时又是C语言最危险的特征。例如,在使用指针的程序中,常常因为用错指针导致程序出错,而这类错误却很难发现。更严重的是,对未初始化的指针进行操作可能会导致系统崩溃。
9.1 内存和变量
9.1.1 计算机内存
9.1.2 变量的存储
9.2 指针和简单变量
9.2.1 指针的概念
9.2.2 创建指针
9.2.3 初始化指针变量
9.2.4 指针变量的引用
9.2.5 给函数传递指针
9.3 指针变量的赋值
9.3.1 初始化赋值
9.3.2 取地址赋值
9.3.3 指针之间赋值
9.3.4 数组赋值
9.3.5 字符串赋值
9.3.6 函数入口赋值
9.4 指针和数组的关系
9.4.1 指针、数组和地址间的关系
9.4.2 指针变量的运算
9.4.3 用指针操作数组元素
9.5 指向多维数组的指针
9.5.1 理解二维数组的地址
9.5.2 多维数组的指针表示
9.5.3 指向多维数组的指针变量
9.5.4 数组名作为函数的参数
9.5.5 指向数组的指针小结
9.6 指针和字符串
9.6.1 字符串的指针表示
9.6.2 字符串指针作函数参数
9.6.3 字符数组和字符指针的区别
9.7 指针数组
9.7.1 指针数组的概念
9.7.2 用指针数组处理字符串
9.7.3 指针数组作函数参数
9.8 指向指针的指针
9.8.1 理解指向指针的指针
9.8.2 二级指针变量与数组
9.9 指针和函数
9.9.1 返回指针的函数
9.9.2 指向函数的指针
9.10 指针和const变量
9.10.1 用const控制指针
9.10.2 const的几种特殊用法
9.11 指针总结
9.11.1 明确分辨各种指针类型
9.11.2 正确理解指针
9.12 小结
第10章 结构
在实际的程序设计中,经常需要处理具有不同数据类型的一组数据。例如,在学生成绩统计表中,应该包含如下几项:姓名(字符型)、学号(整型或字符型)、年龄(整型)、性别(字符型)和成绩(整型或浮点型)。由于数组中各元素的类型和长度都必须一致,因此不能用一个数组存放这一组数据。在这种情况下,C语言中可以使用"结构",这是一种构造数据类型,相当于其他高级语言中的记录类型。
10.1 结构的定义
10.2 结构变量的定义
10.2.1 先定义结构,再定义结构变量
10.2.2 在定义结构的同时,定义结构变量
10.2.3 直接说明结构变量
10.3 结构变量的使用
10.4 结构变量的初始化
10.5 结构数组
10.5.1 结构数组的定义和引用
10.5.2 结构数组的初始化
10.5.3 结构数组实例
10.6 结构指针
10.6.1 定义结构指针
10.6.2 结构指针的引用
10.6.3 用指针处理结构数组
10.7 嵌套结构
10.7.1 包含数组的结构
10.7.2 包含指针的结构
10.7.3 包含结构的结构
10.8 向函数传递结构
10.8.1 传递结构变量的值
10.8.2 传递结构指针到函数
10.9 小结
第11章 联合、枚举和位域
在C语言中,除了数组和指针外,还定义了联合和枚举两种聚合数据类型,并且可以进行类型说明和定义位域,这些是特殊形式的数据类型。下面分别进行讲解。
11.1 联合
11.1.1 定义联合类型
11.1.2 定义联合变量
11.1.3 联合变量成员的引用
11.1.4 联合变量数组
11.1.5 联合变量指针
11.1.6 在结构中嵌套联合类型
11.1.7 结构和联合的区别
11.2 枚举
11.2.1 定义枚举类型
11.2.2 定义枚举变量
11.2.3 枚举类型变量的赋值
11.3 类型说明
11.4 二进制数据存储
11.4.1 数据的存储
11.4.2 不同数据类型的二进制表示
11.5 位运算
11.5.1 位逻辑运算符
11.5.2 移位运算符
11.5.3 位运算的复合赋值运算符
11.5.4 位运算的用途
11.6 位域
11.6.1 定义位域结构
11.6.2 位域变量的声明
11.6.3 位域的使用
11.6.4 位域与联合的使用
11.7 小结
第12章 预处理
C语言的程序中可包括各种以符号#开头的编译指令,这些指令称为预处理命令。预处理命令属于C语言编译器,而不是C语言的组成部分。通过预处理命令可扩展C语言程序设计的环境。
预处理命令通常在程序编译时进行一些符号处理,其并不执行具体的硬件操作。C语言中的预处理命令主要有宏定义指令、文件包含指令和条件编译指令,还有其他一些调试时使用的指令。本章将介绍预处理程序各命令的使用方法。
12.1 预处理简介
12.1.1 预处理功能
12.1.2 预处理命令
12.2 宏定义命令
12.2.1 无参数的宏定义
12.2.2 带参数的宏定义
12.2.3 #undef命令
12.2.4 预处理操作符#和##
12.3 文件包含指令
12.4 条件编译指令
12.4.1 #if、#else、#endif命令
12.4.2 #elif命令
12.4.3 #ifdef、#ifndef命令
12.4.4 使用#defined和#undef
12.5 其他预处理命令
12.5.1 预定义的宏名
12.5.2 重置行号和文件名命令#line
12.5.3 修改编译器设置命令#pragma
12.5.4 产生错误信息命令#error
12.6 内联函数
12.7 小结
第13章 存储管理
在大多数情况下,存储管理都是操作系统的功能。一般的程序设计语言不提供对内存的管理。而C语言提供了管理内存的相关函数,可实现内存的动态存储管理。这是C语言功能强大的一个表现,本章将介绍C语言的内存组织方式和动态存储管理。
13.1 内存组织方式
13.1.1 内存组织方式
13.1.2 堆和栈的比较
13.2 C语言的动态存储管理
13.3 分配内存函数--malloc()
13.4 带初始化的分配内存函数--calloc()
13.5 调整已分配内存函数--realloc()
13.6 释放分配的内存函数--free()
13.7 丢失的内存
13.8 小结
第2篇 C语言进阶篇
第14章 字符及字符串操作
在实际的程序设计中,经常需要处理文本数据。在C语言中,文本数据按字符串格式保存。对于字符串,前面已经介绍过如何用字符数组保存字符串、用字符指针指向一个字符串常量、字符串的输入与输出函数等。
在C语言的库函数中提供了丰富的处理字符及字符串的函数,本章将介绍这些函数的用法。
14.1 字符的操作
14.1.1 检查英文字母函数
14.1.2 检查字母数字函数
14.1.3 检查控制字符函数
14.1.4 十进制数字检查函数
14.1.5 可打印字符检查函数
14.1.6 包含空格的可打印字符检查函数
14.1.7 格式字符检查函数
14.1.8 小写英文字母检查函数
14.1.9 大写英文字母检查函数
14.1.10 控制字符检查函数
14.1.11 十六进制数字检查函数
14.1.12 大写字符转换函数
14.1.13 小写字符转换函数
14.1.14 ASCII字符转换函数
14.1.15 大写字符宏转换函数
14.1.16 小写字符宏转换函数
14.2 字符串的存储
14.2.1 字符串的静态存储
14.2.2 字符串的动态存储
14.3 字符串的操作
14.4 检测字符串长度函数
14.5 查找字符串
14.5.1 查找字符位置函数--strchr()
14.5.2 查找相同字符函数--strspn()
14.5.3 查找包含字符位置函数--strcspn()
14.5.4 查找包含字符函数--strpbrk()
14.5.5 查找子串函数--strstr()
14.5.6 字符查找函数--memchr()
14.5.7 字符包含函数--strrchr()
14.6 比较字符串
14.6.1 比较字符串函数--strcmp()
14.6.2 比较部分字符串函数--memcmp()
14.6.3 比较时忽略大小写函数--stricmp()
14.6.4 包含结束符的比较函数--strncmp()
14.7 连接字符串
14.7.1 连接字符串函数--strcat()
14.7.2 连接部分字符函数--strncat()
14.8 复制字符串
14.8.1 复制字符串函数--strcpy()
14.8.2 复制部分字符函数--strncpy()
14.8.3 更省事的复制函数--strdup()
14.8.4 字符串复制函数--memcpy()
14.8.5 带终止字符的复制函数--memccpy()
14.8.6 字符串移动函数--memmove()
14.9 字符和字符串的转换
14.9.1 大小写字符的转换
14.9.2 转换大小写字符串
14.9.3 字符串与数值的转换
14.10 其他字符串函数
14.10.1 字符串反转函数--strrev()
14.10.2 替换字符串中的字符函数--strset()
14.10.3 分解字符串函数--strtok()
14.10.4 字符串填充函数--memset()
14.11 小结
第15章 文件操作
在前面各章的实例程序中,每次执行程序时,需要用户从键盘上输入数据,并将程序运行结果输出到屏幕上。在实际的应用中,可能需要将计算机的处理结果打印输出或保存到一个文件中,以供其他用户查看。当程序需要处理大量数据时,可能还需要从一个文件中读取这些数据。C语言提供了丰富的文件操作函数。本章将介绍操作文件的常用函数。
15.1 文件与数据流
15.1.1 程序的输入/输出概念
15.1.2 流的概念
15.1.3 预定义的流
15.1.4 文件的基本概念
15.1.5 缓冲文件系统
15.2 文件的打开与关闭
15.2.1 文件指针
15.2.2 打开文件函数--fopen()
15.2.3 关闭文件函数--fclose()
15.3 从文件中读写字符
15.3.1 写字符函数--putc()和fputc()
15.3.2 读字符函数--getc()和fgetc()
15.3.3 合并文件
15.4 从文件中读写字符串
15.4.1 写字符串函数--fputs()
15.4.2 读字符串函数--fgets()
15.4.3 文件格式输出函数--fprintf()
15.4.4 文件格式输入函数--fscanf()
15.5 二进制文件的读写
15.5.1 写入整型数据函数--putw()
15.5.2 读取整型数据函数--getw()
15.5.3 写数据块函数--fwrite()
15.5.4 读数据块函数--fread()
15.5.5 文件检测函数
15.6 文件的随机读写
15.6.1 获取当前位置函数--ftell()
15.6.2 重置文件位置指针函数--rewind()
15.6.3 设置文件位置指针--fseek()函数
15.7 管理缓冲区
15.8 输入/输出的重定向
15.8.1 操作系统的重定向功能
15.8.2 重定向输出
15.8.3 重定向函数--freopen()
15.9 文件管理
15.9.1 重命名文件
15.9.2 删除文件
15.9.3 复制文件
15.9.4 创建临时文件
15.10 小结
第16章 典型库函数应用
前面曾经介绍过C语言中的字符及字符串处理函数。在实际应用中,其实还有很多其他方面的应用。例如数学运算或绘图程序中需要用到大量的数学函数,而另一些程序中可能需要处理日期和时间类的数据等。在C语言中,还提供了一些库函数用于数学和时间处理等。本章将介绍C语言程序设计中,这些典型的库函数应用。
16.1 随机函数
16.1.1 伪随机函数--rand()
16.1.2 随机种子函数--srand()
16.1.3 更加合理的随机数产生方法
16.1.4 获取任意范围的随机数
16.1.5 获取随机字符
16.2 数学函数
16.2.1 绝对值函数
16.2.2 三角函数
16.2.3 双曲三角函数
16.2.4 指数函数和对数函数
16.2.5 取整函数
16.2.6 浮点型分离函数
16.2.7 幂函数
16.2.8 取余函数
16.2.9 C99中扩展的数学函数
作 者: 薛园园 等编著
出版时间:2011
内容简介
毋庸置疑,C语言从产生到现在的各个阶段,都是最重要和最流行的编程语言之一。熟悉和掌握C语言程序设计,已经成为程序员的一门必修课。本书言简意赅、通俗易懂,知识点覆盖全面,详细介绍了C语言的程序设计及最新的C语言编程技术。《C语言开发手册(典藏版)》分4篇,共29章,分别介绍了C语言基础、C语言进阶、C语言的接口技术和现代C语言的扩展。首先,介绍了C语言及其开发环境,并全面介绍了C语言的基本语法知识;接着,详细讲解了C语言的一些高级程序应用;然后,介绍了C语言与其他主流编程语言的接口;最后,讲解了现代C语言的一些扩展应用和高级技术。《C语言开发手册(典藏版)》结构安排紧凑、讲解详细、实例丰富。C语言程序设计的初学者通过本书可以快速掌握C语言程序设计方法。读者对象:本书对现代C语言程序的接口和高级技术进行了全面讲解,对具有一定开发经验的设计人员也有非常好的参考价值。本书可以作为C语言初学者的入门教材,也可作为C语言程序员的参考手册,还可作为大中专院校学生及电脑培训班的参考书。
目录
第1篇 C语言基础篇
第1章 C语言概述
C语言是现代应用最为广泛的编程语言,深受广大程序员的喜爱。本章将简要介绍C语言的产生发展、C语言的特点、标准及C语言流程等内容。并通过一个完整的例子演示C程序开发过程中的项目创建、源代码编写、编译及调试的全过程。同时,将分析C语言程序构成特点。
1.1 C语言发展历史
1.2 C语言的特点
1.2.1 C语言的基本特点
1.2.2 C语言的优点
1.2.3 C语言的缺点
1.3 C语言的标准
1.3.1 C标准概述
1.3.2 C语言的新标准
1.3.3 编译器对C标准的支持
1.4 C语言开发流程
1.4.1 功能分析
1.4.2 划分任务
1.4.3 编写源代码
1.4.4 编译和链接
1.4.5 修改源代码
1.4.6 功能测试
1.4.7 发布程序
1.4.8 维护和修改
1.5 第一个C程序
1.5.1 创建项目
1.5.2 输入源代码
1.5.3 编译链接
1.5.4 调试
1.6 C程序构成分析
1.6.1 头文件
1.6.2 主函数
1.6.3 其他组成部分
1.7 良好的编程规范
1.7.1 完备和详尽的程序注释
1.7.2 整齐的代码书写格式
1.7.3 简洁清晰的命名
1.8 C语言在不同领域的扩展应用
1.8.1 单片机方面
1.8.2 LabVIEW方面
1.8.3 LabWindows/CVI方面
1.8.4 MATLAB方面
1.8.5 JavaScript方面
1.8.6 并行计算方面
1.8.7 Linux平台
1.9 小结
第2章 典型的C语言开发环境
C语言的成功及大范围的应用也造就了丰富的C语言编译器。对于用户来说,学习C语言要紧密结合C编译器或者C集成开发环境来进行。程序员要想快速高效地开发C程序,必须首先熟悉C语言开发环境的使用。本章将介绍几种主流的C语言开发环境。
2.1 C语言开发环境简介
2.1.1 C语言开发环境的构成
2.1.2 典型的C语言开发环境
2.2 使用Turbo C开发
2.2.1 Turbo C的开发环境简介
2.2.2 Turbo C的配置文件
2.2.3 用Turbo C创建C程序
2.2.4 编译链接程序
2.2.5 运行程序
2.3 使用Visual Studio开发
2.3.1 Microsoft Visual C++的开发环境简介
2.3.2 使用Visual Studio 2008创建C程序
2.3.3 编译链接程序
2.3.4 调试运行程序
2.4 使用Dev-C++开发
2.4.1 Dev-C++的开发环境简介
2.4.2 Dev-C++开发环境的设置
2.4.3 使用Dev-C++创建C程序
2.4.4 编译和运行程序
2.4.5 升级Dev-C++
2.5 使用Code::Blocks开发
2.5.1 Code::Blocks的开发环境简介
2.5.2 Code::Blocks开发环境的设置
2.5.3 使用Code::Blocks创建C程序
2.5.4 编译运行程序
2.6 小结
第3章 C语言数据类型
应用程序一般在计算机的内存中运行,对各种数据进行操作。C语言中的数据具有不同的类型,用于不同对象的表示。数据是C语言基本的操作对象。本章将首先介绍内存中程序和数据的存储,然后将介绍C语言中各种数据类型及其特点。
3.1 数据的存储
3.1.1 内存单元
3.1.2 数据的存储
3.1.3 程序在内存中的映射
3.2 数据类型简介
3.2.1 基本类型
3.2.2 构造类型
3.2.3 指针类型
3.2.4 空类型
3.3 标识符和关键字
3.3.1 标识符
3.3.2 关键字
3.4 分隔符
3.4.1 单分隔符
3.4.2 组合分隔符
3.5 常量
3.5.1 直接常量
3.5.2 符号常量
3.6 变量
3.6.1 变量声明
3.6.2 变量初始化
3.7 整型数据
3.7.1 整型数据的声明
3.7.2 整型数据的存储
3.7.3 整型常量
3.7.4 整型数据的输入
3.7.5 整型数据的输出
3.8 字符型数据
3.8.1 字符型变量的声明
3.8.2 字符型的存储
3.8.3 字符型常量
3.8.4 转义字符
3.8.5 字符型数据的输入
3.8.6 字符型数据的输出
3.9 浮点型数据
3.9.1 浮点型数据的声明
3.9.2 浮点型数据的存储
3.9.3 浮点型常量
3.9.4 浮点型数据的输入
3.9.5 浮点型数据的输出
3.10 类型转换
3.10.1 混合运算中的类型转换
3.10.2 强制类型转换
3.11 C99新增数据类型
3.12 小结
第4章 运算符和表达式
第3章介绍了C语言中的基本数据类型,这些是C语言最基本的操作对象。而在第4章中,读者将了解到最基本的操作方法,即运算符和表达式。在C语言中,通过运算符将常量、变量等操作对象组成表达式,而后,由表达式进一步构成C语句。可以说,运算符和表达式是C语言中最基本的操作方法。
4.1 运算符
4.1.1 运算符概述
4.1.2 算术运算符
4.1.3 赋值运算符
4.1.4 关系运算符
4.1.5 逻辑运算符
4.1.6 条件运算符
4.1.7 位运算符
4.1.8 其他运算符
4.1.9 运算符优先级和结合性
4.2 表达式
4.2.1 算术表达式
4.2.2 赋值表达式
4.2.3 逗号表达式
4.2.4 关系和逻辑表达式
4.3 小结
第5章 C语句及流程控制结构
第4章介绍了C语言中的运算符和表达式,这些是构成C语句的基本单元。C语句,即C语言中的操作命令,用于使计算机完成特定的功能。一条完整的语句必须以";"结束。C语言的源程序是由一系列的语句组成的,这些语句可以完成变量声明、赋值和控制输入/输出等操作。由于计算机能识别的是机器指令,因此,编译系统将一条语句转换成若干条机器指令来执行。C语言中的语句包括说明语句、表达式语句、循环语句、条件语句、开关语句、复合语句、空语句和返回语句等,下面分别进行介绍。
5.1 说明语句
5.2 表达式语句
5.3 复合语句
5.4 循环语句
5.4.1 while循环语句
5.4.2 do…while循环语句
5.4.3 for循环语句
5.5 条件语句
5.5.1 单分支if条件结构
5.5.2 双分支if条件结构
5.5.3 阶梯式if…else…if条件结构
5.5.4 if条件结构总结
5.6 开关语句
5.7 跳转语句
5.7.1 goto跳转语句
5.7.2 break跳转语句
5.7.3 continue跳转语句
5.8 函数调用语句
5.9 空语句
5.10 返回语句
5.11 C语言的流程控制结构
5.12 小结
第6章 格式化输入/输出
使用计算机程序解决问题时,需要由用户输入数据,通过程序进行运算后,再输出结果。由此过程可以看到,程序中输入/输出占有相当重要的地位。在C语言中,所有的数据输入/输出都是由库函数完成的,因此都是函数语句。在前面各章的实例中,曾使用过printf()函数和scanf()函数进行数据的输出和输入。本章将详细介绍这两个函数的使用,同时,还将介绍其他一些用于输入和输出的函数。
6.1 格式化输出函数printf()
6.1.1 printf()函数的格式
6.1.2 printf()函数的格式字符
6.1.3 printf()函数的修饰符
6.1.4 典型的printf()函数实例
6.1.5 动态设置输出宽度和精度
6.1.6 printf()函数的返回值
6.1.7 理解输出列表
6.1.8 printf格式化输出函数综合实例
6.2 格式化输入函数scanf()
6.2.1 scanf()函数的格式
6.2.2 scanf()函数格式字符串
6.2.3 scanf()函数注意问题
6.2.4 scanf()函数的返回值
6.2.5 格式化输入函数scanf()综合实例
6.3 其他常用的输入/输出函数
6.3.1 字符读入函数getchar()
6.3.2 字符读入函数getch()
6.3.3 字符串读入函数gets()
6.3.4 字符输出函数putch()
6.3.5 字符输出函数putchar()
6.3.6 字符串输出函数puts()
6.3.7 格式化内存缓冲区输出函数sprintf()
6.3.8 格式化内存缓冲区输入函数sscanf()
6.4 小结
第7章 数组
在前面章节中介绍了C语言的基本数据类型,包括整型、字符型和实型。以这些基本数据类型为基础,C语言还提供几种构造数据类型。构造类型数据是由基本类型数据按一定规则组成的,数组就是其中一种构造数据类型。在程序中用循环结构可以很方便地处理数组。本章将详细介绍C语言中数组的使用。
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.2.5 一维数组的初始化
7.3 二维数组
7.3.1 二维数组的声明
7.3.2 二维数组的存储
7.3.3 二维数组的引用
7.3.4 二维数组的初始化
7.4 字符数组和字符串
7.4.1 一维字符串数组
7.4.2 了解字符串
7.4.3 字符串的操作函数
7.4.4 字符串的输入输出
7.4.5 二维字符串数组
7.5 多维数组
7.6 数组的基本应用
7.6.1 反转字符串
7.6.2 查找最大值
7.6.3 数据排序
7.7 小结
第8章 函数
使用C语言编程,就肯定会使用到函数。C语言允许用户使用一些编译环境自带的库函数,例如使用printf()函数输出变量的值,使用scanf()函数接收用户的输入等。合理使用库函数可以大大简化程序设计过程。同时,为了有利于程序的模块化,促进程序资源的共享。C语言也支持用户使用自定义函数。本章将详细介绍函数的概念、调用、作用域等相关知识。
8.1 函数的概念
8.1.1 什么是函数
8.1.2 函数的分类
8.1.3 函数的定义
8.1.4 main()函数
8.2 函数的工作过程
8.2.1 程序结构
8.2.2 函数执行过程
8.3 编写函数
8.3.1 函数头
8.3.2 返回类型
8.3.3 参数列表
8.3.4 函数体
8.3.5 函数原型
8.4 函数的参数
8.4.1 形参和实参
8.4.2 参数传递过程
8.4.3 值调用
8.4.4 引用调用
8.4.5 数组作为函数参数
8.4.6 指针作为函数参数
8.4.7 main()函数的参数
8.5 函数调用
8.5.1 函数调用方式
8.5.2 被调函数的说明
8.5.3 函数的返回值
8.6 几种典型的函数调用形式
8.6.1 赋值调用与引用调用
8.6.2 嵌套调用
8.6.3 递归调用
8.7 函数及其变量的作用域
8.7.1 函数的作用域
8.7.2 函数的变量作用域
8.8 小结
第9章 指针
指针是C语言中广泛使用的一种数据类型。利用指针可以操作各种基本的数据类型,以及数组等复合数据结构,甚至使用指针还可以访问函数。正确理解和使用指针对于成功进行C语言程序设计是至关重要的。
指针是C语言最显著的特征,同时又是C语言最危险的特征。例如,在使用指针的程序中,常常因为用错指针导致程序出错,而这类错误却很难发现。更严重的是,对未初始化的指针进行操作可能会导致系统崩溃。
9.1 内存和变量
9.1.1 计算机内存
9.1.2 变量的存储
9.2 指针和简单变量
9.2.1 指针的概念
9.2.2 创建指针
9.2.3 初始化指针变量
9.2.4 指针变量的引用
9.2.5 给函数传递指针
9.3 指针变量的赋值
9.3.1 初始化赋值
9.3.2 取地址赋值
9.3.3 指针之间赋值
9.3.4 数组赋值
9.3.5 字符串赋值
9.3.6 函数入口赋值
9.4 指针和数组的关系
9.4.1 指针、数组和地址间的关系
9.4.2 指针变量的运算
9.4.3 用指针操作数组元素
9.5 指向多维数组的指针
9.5.1 理解二维数组的地址
9.5.2 多维数组的指针表示
9.5.3 指向多维数组的指针变量
9.5.4 数组名作为函数的参数
9.5.5 指向数组的指针小结
9.6 指针和字符串
9.6.1 字符串的指针表示
9.6.2 字符串指针作函数参数
9.6.3 字符数组和字符指针的区别
9.7 指针数组
9.7.1 指针数组的概念
9.7.2 用指针数组处理字符串
9.7.3 指针数组作函数参数
9.8 指向指针的指针
9.8.1 理解指向指针的指针
9.8.2 二级指针变量与数组
9.9 指针和函数
9.9.1 返回指针的函数
9.9.2 指向函数的指针
9.10 指针和const变量
9.10.1 用const控制指针
9.10.2 const的几种特殊用法
9.11 指针总结
9.11.1 明确分辨各种指针类型
9.11.2 正确理解指针
9.12 小结
第10章 结构
在实际的程序设计中,经常需要处理具有不同数据类型的一组数据。例如,在学生成绩统计表中,应该包含如下几项:姓名(字符型)、学号(整型或字符型)、年龄(整型)、性别(字符型)和成绩(整型或浮点型)。由于数组中各元素的类型和长度都必须一致,因此不能用一个数组存放这一组数据。在这种情况下,C语言中可以使用"结构",这是一种构造数据类型,相当于其他高级语言中的记录类型。
10.1 结构的定义
10.2 结构变量的定义
10.2.1 先定义结构,再定义结构变量
10.2.2 在定义结构的同时,定义结构变量
10.2.3 直接说明结构变量
10.3 结构变量的使用
10.4 结构变量的初始化
10.5 结构数组
10.5.1 结构数组的定义和引用
10.5.2 结构数组的初始化
10.5.3 结构数组实例
10.6 结构指针
10.6.1 定义结构指针
10.6.2 结构指针的引用
10.6.3 用指针处理结构数组
10.7 嵌套结构
10.7.1 包含数组的结构
10.7.2 包含指针的结构
10.7.3 包含结构的结构
10.8 向函数传递结构
10.8.1 传递结构变量的值
10.8.2 传递结构指针到函数
10.9 小结
第11章 联合、枚举和位域
在C语言中,除了数组和指针外,还定义了联合和枚举两种聚合数据类型,并且可以进行类型说明和定义位域,这些是特殊形式的数据类型。下面分别进行讲解。
11.1 联合
11.1.1 定义联合类型
11.1.2 定义联合变量
11.1.3 联合变量成员的引用
11.1.4 联合变量数组
11.1.5 联合变量指针
11.1.6 在结构中嵌套联合类型
11.1.7 结构和联合的区别
11.2 枚举
11.2.1 定义枚举类型
11.2.2 定义枚举变量
11.2.3 枚举类型变量的赋值
11.3 类型说明
11.4 二进制数据存储
11.4.1 数据的存储
11.4.2 不同数据类型的二进制表示
11.5 位运算
11.5.1 位逻辑运算符
11.5.2 移位运算符
11.5.3 位运算的复合赋值运算符
11.5.4 位运算的用途
11.6 位域
11.6.1 定义位域结构
11.6.2 位域变量的声明
11.6.3 位域的使用
11.6.4 位域与联合的使用
11.7 小结
第12章 预处理
C语言的程序中可包括各种以符号#开头的编译指令,这些指令称为预处理命令。预处理命令属于C语言编译器,而不是C语言的组成部分。通过预处理命令可扩展C语言程序设计的环境。
预处理命令通常在程序编译时进行一些符号处理,其并不执行具体的硬件操作。C语言中的预处理命令主要有宏定义指令、文件包含指令和条件编译指令,还有其他一些调试时使用的指令。本章将介绍预处理程序各命令的使用方法。
12.1 预处理简介
12.1.1 预处理功能
12.1.2 预处理命令
12.2 宏定义命令
12.2.1 无参数的宏定义
12.2.2 带参数的宏定义
12.2.3 #undef命令
12.2.4 预处理操作符#和##
12.3 文件包含指令
12.4 条件编译指令
12.4.1 #if、#else、#endif命令
12.4.2 #elif命令
12.4.3 #ifdef、#ifndef命令
12.4.4 使用#defined和#undef
12.5 其他预处理命令
12.5.1 预定义的宏名
12.5.2 重置行号和文件名命令#line
12.5.3 修改编译器设置命令#pragma
12.5.4 产生错误信息命令#error
12.6 内联函数
12.7 小结
第13章 存储管理
在大多数情况下,存储管理都是操作系统的功能。一般的程序设计语言不提供对内存的管理。而C语言提供了管理内存的相关函数,可实现内存的动态存储管理。这是C语言功能强大的一个表现,本章将介绍C语言的内存组织方式和动态存储管理。
13.1 内存组织方式
13.1.1 内存组织方式
13.1.2 堆和栈的比较
13.2 C语言的动态存储管理
13.3 分配内存函数--malloc()
13.4 带初始化的分配内存函数--calloc()
13.5 调整已分配内存函数--realloc()
13.6 释放分配的内存函数--free()
13.7 丢失的内存
13.8 小结
第2篇 C语言进阶篇
第14章 字符及字符串操作
在实际的程序设计中,经常需要处理文本数据。在C语言中,文本数据按字符串格式保存。对于字符串,前面已经介绍过如何用字符数组保存字符串、用字符指针指向一个字符串常量、字符串的输入与输出函数等。
在C语言的库函数中提供了丰富的处理字符及字符串的函数,本章将介绍这些函数的用法。
14.1 字符的操作
14.1.1 检查英文字母函数
14.1.2 检查字母数字函数
14.1.3 检查控制字符函数
14.1.4 十进制数字检查函数
14.1.5 可打印字符检查函数
14.1.6 包含空格的可打印字符检查函数
14.1.7 格式字符检查函数
14.1.8 小写英文字母检查函数
14.1.9 大写英文字母检查函数
14.1.10 控制字符检查函数
14.1.11 十六进制数字检查函数
14.1.12 大写字符转换函数
14.1.13 小写字符转换函数
14.1.14 ASCII字符转换函数
14.1.15 大写字符宏转换函数
14.1.16 小写字符宏转换函数
14.2 字符串的存储
14.2.1 字符串的静态存储
14.2.2 字符串的动态存储
14.3 字符串的操作
14.4 检测字符串长度函数
14.5 查找字符串
14.5.1 查找字符位置函数--strchr()
14.5.2 查找相同字符函数--strspn()
14.5.3 查找包含字符位置函数--strcspn()
14.5.4 查找包含字符函数--strpbrk()
14.5.5 查找子串函数--strstr()
14.5.6 字符查找函数--memchr()
14.5.7 字符包含函数--strrchr()
14.6 比较字符串
14.6.1 比较字符串函数--strcmp()
14.6.2 比较部分字符串函数--memcmp()
14.6.3 比较时忽略大小写函数--stricmp()
14.6.4 包含结束符的比较函数--strncmp()
14.7 连接字符串
14.7.1 连接字符串函数--strcat()
14.7.2 连接部分字符函数--strncat()
14.8 复制字符串
14.8.1 复制字符串函数--strcpy()
14.8.2 复制部分字符函数--strncpy()
14.8.3 更省事的复制函数--strdup()
14.8.4 字符串复制函数--memcpy()
14.8.5 带终止字符的复制函数--memccpy()
14.8.6 字符串移动函数--memmove()
14.9 字符和字符串的转换
14.9.1 大小写字符的转换
14.9.2 转换大小写字符串
14.9.3 字符串与数值的转换
14.10 其他字符串函数
14.10.1 字符串反转函数--strrev()
14.10.2 替换字符串中的字符函数--strset()
14.10.3 分解字符串函数--strtok()
14.10.4 字符串填充函数--memset()
14.11 小结
第15章 文件操作
在前面各章的实例程序中,每次执行程序时,需要用户从键盘上输入数据,并将程序运行结果输出到屏幕上。在实际的应用中,可能需要将计算机的处理结果打印输出或保存到一个文件中,以供其他用户查看。当程序需要处理大量数据时,可能还需要从一个文件中读取这些数据。C语言提供了丰富的文件操作函数。本章将介绍操作文件的常用函数。
15.1 文件与数据流
15.1.1 程序的输入/输出概念
15.1.2 流的概念
15.1.3 预定义的流
15.1.4 文件的基本概念
15.1.5 缓冲文件系统
15.2 文件的打开与关闭
15.2.1 文件指针
15.2.2 打开文件函数--fopen()
15.2.3 关闭文件函数--fclose()
15.3 从文件中读写字符
15.3.1 写字符函数--putc()和fputc()
15.3.2 读字符函数--getc()和fgetc()
15.3.3 合并文件
15.4 从文件中读写字符串
15.4.1 写字符串函数--fputs()
15.4.2 读字符串函数--fgets()
15.4.3 文件格式输出函数--fprintf()
15.4.4 文件格式输入函数--fscanf()
15.5 二进制文件的读写
15.5.1 写入整型数据函数--putw()
15.5.2 读取整型数据函数--getw()
15.5.3 写数据块函数--fwrite()
15.5.4 读数据块函数--fread()
15.5.5 文件检测函数
15.6 文件的随机读写
15.6.1 获取当前位置函数--ftell()
15.6.2 重置文件位置指针函数--rewind()
15.6.3 设置文件位置指针--fseek()函数
15.7 管理缓冲区
15.8 输入/输出的重定向
15.8.1 操作系统的重定向功能
15.8.2 重定向输出
15.8.3 重定向函数--freopen()
15.9 文件管理
15.9.1 重命名文件
15.9.2 删除文件
15.9.3 复制文件
15.9.4 创建临时文件
15.10 小结
第16章 典型库函数应用
前面曾经介绍过C语言中的字符及字符串处理函数。在实际应用中,其实还有很多其他方面的应用。例如数学运算或绘图程序中需要用到大量的数学函数,而另一些程序中可能需要处理日期和时间类的数据等。在C语言中,还提供了一些库函数用于数学和时间处理等。本章将介绍C语言程序设计中,这些典型的库函数应用。
16.1 随机函数
16.1.1 伪随机函数--rand()
16.1.2 随机种子函数--srand()
16.1.3 更加合理的随机数产生方法
16.1.4 获取任意范围的随机数
16.1.5 获取随机字符
16.2 数学函数
16.2.1 绝对值函数
16.2.2 三角函数
16.2.3 双曲三角函数
16.2.4 指数函数和对数函数
16.2.5 取整函数
16.2.6 浮点型分离函数
16.2.7 幂函数
16.2.8 取余函数
16.2.9 C99中扩展的数学函数
下一篇: Delphi高手突破
上一篇: C语言程序设计(第四版 高清晰版)谭浩强著