互联网
类型
可以朗读
语音朗读
215千字
字数
2023-09-01
发行日期
展开全部
主编推荐语
一本全面介绍C语言的技术性书籍,帮你深入了解C语言的基础知识和高级特性,以及它在实际项目中的应用。
内容简介
全书共15章,首先通过清晰易懂的语言,深入浅出地解释了C语言的语法和编程原理,其次重点介绍了C语言的指针操作、内存管理、文件处理和模块化编程等关键概念。此外,本书还提供了丰富的实例,帮助读者加深对C语言的理解,并通过实践锻炼读者解决实际问题的能力。
本书适合作为高等院校计算机科学及相关专业的教材和教学参考书,也可作为职业开发人员的自学用书和参考手册。
目录
- 版权信息
- 作者简介
- 内容简介
- 前言
- 第1章 初识C语言
- 1.1 C语言的发明及发展
- 1.2 C语言现状
- 1.3 C语言开发环境的搭建
- 1.3.1 下载Visual Studio
- 1.3.2 安装Visual Studio
- 1.3.3 激活Visual Studio
- 第2章 C语言基础知识
- 2.1 第一个C语言程序
- 2.1.1 创建项目和源文件
- 2.1.2 编写并运行程序
- 2.1.3 新手常见错误
- 2.2 函数
- 2.2.1 主函数
- 2.2.2 函数的概念
- 2.2.3 自定义函数
- 2.2.4 调用函数
- 2.3 变量和常量
- 2.4 printf函数和include命令
- 2.4.1 printf函数
- 2.4.2 include命令
- 第3章 数据类型
- 3.1 整型数据类型
- 3.1.1 各种整型数据类型
- 3.1.2 sizeof测量大小
- 3.1.3 三位二进制的数值范围
- 3.1.4 数值的补码表示法
- 3.1.5 整型的数值范围
- 3.1.6 无符号整型
- 3.2 浮点数据类型
- 3.2.1 float
- 3.2.2 double
- 3.2.3 浮点类型占用的空间大小
- 3.3 变量
- 3.3.1 变量命名规则
- 3.3.2 初始化和赋值
- 3.4 常量
- 3.4.1 字面常量
- 3.4.2 符号常量
- 3.5 字符
- 3.5.1 字符常量
- 3.5.2 ASCII码
- 3.5.3 字符变量
- 3.5.4 字符串常量
- 3.5.5 转义字符
- 第4章 格式化输入和输出
- 4.1 printf函数
- 4.1.1 类型提升
- 4.1.2 转换规范
- 4.1.3 转换操作
- 4.1.4 长度指示符
- 4.1.5 精度
- 4.1.6 最小字段宽度
- 4.1.7 标志
- 4.2 scanf函数
- 4.2.1 Visual Studio安全报错
- 4.2.2 scanf函数的使用公式
- 4.2.3 scanf函数的匹配规则
- 4.2.4 输入字符
- 4.2.5 输入字符串
- 第5章 运算符和表达式
- 5.1 表达式
- 5.2 运算符
- 5.3 类型转换
- 5.3.1 同类型运算
- 5.3.2 不同类型运算
- 5.3.3 自动类型转换
- 5.3.4 整型运算丢失精度
- 5.3.5 强制类型转换
- 5.3.6 赋值造成的类型转换
- 5.4 关系运算符
- 5.4.1 大于(>)和小于(<)
- 5.4.2 大于或等于(>=)和小于或等于(<=)
- 5.4.3 等于(==)和不等于(!=)
- 5.5 逻辑运算符
- 5.5.1 逻辑或(||)和逻辑与(&&)
- 5.5.2 逻辑非(!)
- 5.5.3 运算符优先级
- 第6章 控制流
- 6.1 分支结构
- 6.1.1 分支流程
- 6.1.2 else关键字
- 6.1.3 复合语句
- 6.1.4 嵌套if语句
- 6.1.5 else if语句
- 6.1.6 条件运算符
- 6.2 循环结构
- 6.2.1 while循环
- 6.2.2 for循环
- 6.2.3 do-while循环
- 6.2.4 循环嵌套
- 6.3 break和continue
- 6.3.1 break跳出循环
- 6.3.2 continue开始新一轮循环
- 6.3.3 使用break和continue
- 6.3.4 循环嵌套中使用break和continue
- 6.4 多重选择
- 6.4.1 switch语句
- 6.4.2 在switch中使用break
- 6.4.3 连续转换程序
- 6.4.4 break和continue的作用范围
- 第7章 数组
- 7.1 初识数组
- 7.2 数组初始化
- 7.3 访问数组元素
- 7.3.1 遍历数组的循环
- 7.3.2 小心数组越界
- 7.3.3 不初始化数组会怎样
- 7.4 数组占用空间大小
- 7.5 数组赋值
- 7.5.1 逐个元素赋值
- 7.5.2 内存复制
- 7.6 多维数组
- 7.6.1 使用数组作为数组的元素
- 7.6.2 二维数组
- 7.6.3 实现更高维度的数组
- 7.7 字符串与字符数组
- 7.7.1 字符数组存储字符串
- 7.7.2 字符串结尾标记'\0'
- 7.7.3 字符数组的大小及长度
- 7.7.4 修改字符数组
- 7.7.5 从键盘输入字符串到字符数组中
- 7.7.6 其他的输入和输出函数
- 7.8 输入和输出缓存
- 7.8.1 输出缓存区
- 7.8.2 输入缓存区
- 7.8.3 非标准的输入函数
- 第8章 函数
- 8.1 函数的定义
- 8.2 函数的调用
- 8.3 使用函数的意义
- 8.3.1 计算三角形面积
- 8.3.2 复用代码
- 8.4 函数返回值
- 8.5 函数声明
- 8.6 形参与实参
- 8.6.1 自动类型转换
- 8.6.2 形参与实参相互独立
- 8.6.3 不同函数的变量相互独立
- 8.6.4 数组作为函数参数
- 8.7 函数递归
- 8.7.1 函数递归调用的示例
- 8.7.2 正确的递归实现
- 8.7.3 递推和回归
- 8.7.4 用递归计算阶乘
- 8.7.5 递归计算斐波那契数列
- 8.8 调试代码
- 8.8.1 调试模式与发布模式
- 8.8.2 调试功能在Visual Studio中的运用
- 第9章 指针
- 9.1 指针基础
- 9.1.1 内存和内存地址
- 9.1.2 指针类型
- 9.1.3 使用指针
- 9.1.4 指针类型的大小
- 9.1.5 指针类型转换
- 9.1.6 指针基础例题
- 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.4 指针作为函数参数传递
- 9.4.1 将指针作为函数参数进行传递
- 9.4.2 通用指针void *
- 9.4.3 将数组作为函数参数进行传递
- 9.4.4 将指针作为函数参数传递的例题
- 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.7.1 从函数中返回多个变量
- 9.7.2 函数返回指针例题
- 9.8 指针和多维数组
- 9.8.1 数组名的转换规则
- 9.8.2 多维数组名和指针
- 9.8.3 移动数组指针
- 9.8.4 为数组指针取值
- 9.8.5 指针访问与下标访问等价
- 9.8.6 对数组名取地址
- 9.8.7 数组指针的运用
- 9.8.8 指针和多维数组例题
- 9.9 指针和三维数组
- 9.9.1 指针访问三维数组元素
- 9.9.2 指针和三维数组例题
- 9.10 声明器
- 9.10.1 声明与使用形式统一
- 9.10.2 函数声明器
- 9.10.3 声明器中的优先级
- 9.11 函数指针和数组
- 9.11.1 函数指针
- 9.11.2 使用函数指针
- 9.11.3 函数指针数组
- 9.11.4 函数指针的运用
- 9.11.5 函数指针和数组例题
- 第10章 字符串
- 10.1 字符串和字符指针
- 10.1.1 字符数组和指针
- 10.1.2 使用指针处理字符串
- 10.2 const关键字
- 10.2.1 使用const修饰数组元素
- 10.2.2 使用const修饰指针所指向的数据
- 10.2.3 使用const修饰指针本身
- 10.2.4 使用const修饰基本变量
- 10.3 字符串处理函数
- 10.3.1 strlen函数:获取字符串长度
- 10.3.2 strcat函数:拼接字符串
- 10.3.3 strcpy函数:复制字符串
- 10.3.4 strcmp函数:比较字符串
- 10.4 实现字符串处理函数
- 10.4.1 mstrlen函数
- 10.4.2 mstrcat函数
- 10.4.3 mstrcpy函数
- 10.4.4 mstrcmp函数
- 第11章 复合数据
- 11.1 结构化数据
- 11.1.1 使用数组存储数据
- 11.1.2 交互式程序
- 11.1.3 数据聚合
- 11.2 结构体
- 11.2.1 结构体别名
- 11.2.2 初始化结构体
- 11.2.3 结构体数组
- 11.2.4 嵌套结构
- 11.2.5 指向结构体的指针
- 11.2.6 结构体在函数中传递
- 11.2.7 结构体例题
- 11.3 联合体
- 11.3.1 联合体的性质
- 11.3.2 联合体的应用
- 11.4 枚举
- 第12章 作用域和预处理器
- 12.1 标识符作用域
- 12.1.1 块作用域
- 12.1.2 函数作用域
- 12.1.3 文件作用域
- 12.2 预处理指令
- 12.2.1 预处理指令的概念
- 12.2.2 #define 预处理指令的用法
- 12.2.3 带参数的#define
- 12.2.4 宏函数的运算符
- 12.2.5 取消宏定义
- 12.3 typedef关键字
- 12.3.1 typedef关键字的概念
- 12.3.2 typedef和struct的关系
- 12.3.3 typedef与#define的区别
- 12.3.4 提高整型可移植性
- 12.4 条件编译
- 12.4.1 #if指令
- 12.4.2 #else指令
- 12.4.3 #elif指令
- 12.4.4 #ifdef指令和#ifndef指令
- 第13章 多文件代码和存储类别
- 13.1 多文件代码
- 13.1.1 预处理指令#include
- 13.1.2 多文件代码
- 13.2 更复杂的多文件代码
- 13.2.1 多文件代码实现
- 13.2.2 头文件守卫
- 13.3 存储类别
- 13.3.1 自动变量
- 13.3.2 静态变量
- 第14章 文件操作
- 14.1 创建和写入文件
- 14.1.1 fopen函数
- 14.1.2 fprintf函数
- 14.1.3 fclose函数
- 14.1.4 文本模式与二进制模式
- 14.2 读取文件
- 14.2.1 fscanf函数
- 14.2.2 fgetc函数
- 14.2.3 判断文件状态
- 14.2.4 fgets函数
- 14.3 写入文件
- 14.3.1 fputc函数
- 14.3.2 fputs函数
- 14.3.3 fflush函数
- 14.3.4 文件偏移
- 14.3.5 更新文件
- 14.4 更多操作方式
- 14.4.1 以二进制形式保存数据
- 14.4.2 从文件中读取二进制数据
- 第15章 位操作、动态内存管理和主函数参数
- 15.1 位操作
- 15.1.1 十进制转二进制
- 15.1.2 十进制转二进制函数
- 15.1.3 位运算符
- 15.1.4 左移和右移
- 15.2 动态内存管理
- 15.2.1 变长数组
- 15.2.2 申请内存空间
- 15.2.3 释放内存空间
- 15.2.4 从函数中返回指针
- 15.3 主函数参数
- 15.3.1 ping命令
- 15.3.2 main函数参数
- 15.3.3 使用主函数参数
展开全部
出版方
清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。