账号: 密码:
中国大学出版社协会 | 首页 | 宏观指导 | 出版社天地 | 图书代办站 | 教材图书信息 | 教材图书评论 | 在线订购 | 教材征订
搜索 新闻 图书 ISBN 作者 音像 出版社 代办站 教材征订
购书 请登录 免费注册 客服电话:010-62510665 62510769
图书查询索引 版别索引 分类索引 中图法分类 专业分类 用途分类 制品类型 读者对象 自分类 最新 畅销 推荐 特价 教材征订
综合查询
说C解C - 中国高校教材图书网
书名: 说C解C
ISBN:9787560655789 条码:
作者: 耿楠 聂艳明 李建良 冯妍  相关图书 装订:0
印次:1-1 开本:16开
定价: ¥46.00  折扣价:¥43.70
折扣:0.95 节省了2.3元
字数: 459千字
出版社: 西安电子科技大学出版社 页数: 316页
发行编号: 每包册数: 9
出版日期: 2021-04-02
小团购 订购 咨询 推荐 打印 放入存书架

内容简介:
本书针对目前国内高校在C 语言程序设计教学中对部分重要语法细节的关注不足、对综合应用的分析不够深入、缺少工程化意识和忽略程序DEBUG 等问题,提出了程序设计“三观”的概念,即内存观、代码观和调试观,选取25 个实用性强的专题如DEBUG 的概念及使用、scanf() 函数及键盘缓冲区、数据类型的本质、浮点数及其使用、函数参数的单向值传递、泛型排序程序设计和第三方库的安装与使用等,以科技论文的撰写方式对所列专题进行了较为深入细致的讨论。本书图文并茂,实例丰富,语言活泼,以期为深入学习和掌握C 语言程序设计的读者提供指导和帮助,为承担C 语言教学的教师提供参考和启发。

作者简介:
 
章节目录:
第1 章 C 语言的“三观”和提问的智慧 1







1.1 C 语言的“三观” 1







1.1.1 内存观 1







1.1.2 代码观 2







1.1.3 调试观 2







1.2 提问的智慧 3







1.2.1 提问之前应该做的事情 3







1.2.2 提问模板 4







1.2.3 提问时的建议 5







1.2.4 提问者要谨记 6







1.3 小结 6







第2 章 开发环境安装与配置 7







2.1 安装MinGW 7







2.1.1 在线安装MinGW-w64 7







2.1.2 离线安装MinGW-w64 10







2.1.3 测试MinGW-w64 11







2.1.4 配置Windows 的Path 环境变量 12







2.1.5 命令行开发C 语言程序 14







2.1.6 “Makefile”编译/链接C 语言程序 18







2.2 开发IDE——Code::Blocks 21







2.2.1 下载Code::Blocks 21







2.2.2 安装Code::Blocks 22







2.2.3 配置Code::Blocks 24







2.2.4 测试Code::Blocks 26







2.3 小结 27







第3 章 Code::Blocks 的工程及其应用28







3.1 Code::Blocks 中的工程 28







3.1.1 创建工程 28







3.1.2 “cbp”工程文件 31







3.1.3 工程设置的变更 31







3.1.4 构建工程 33







3.1.5 其它相关文件 34







3.2 在工程中添加/删除文件 35







3.2.1 为工程新建文件 35







3.2.2 为工程添加文件 36







3.2.3 为工程删除文件 38







3.3 工作区39







3.4 小结40







第4 章 DEBUG 的概念及其使用 41







4.1 DEBUG 的概念 41







4.2 在Code::Blocks 中进行DEBUG 42







4.2.1 配置Debugger 42







4.2.2 DEBUG 菜单与工具栏 43







4.2.3 添加程序运行断点 44







4.2.4 DEBUG 窗口 46







4.2.5 查看程序运行状态 48







4.2.6 单步执行程序 48







4.2.7 修改并继续调试程序 49







4.2.8 结束程序调试 51







4.2.9 调试操作失效的处理 51







4.3 在命令行DEBUG 程序 52







4.3.1 在命令行编译链接程序 52







4.3.2 在命令行启动gdb 调试器调试程序 53







4.4 小结57







第5 章 scanf() 函数及键盘缓冲区 58







5.1 输入流和输入缓冲区的概念 58







5.2 数据输入实例分析 59







5.2.1 读入整型数据存入字符型变量 59







5.2.2 读入字符型数据存入整型变量 62







5.2.3 读入字符型数据存入字符型变量 63







5.2.4 格式串中的空格 64







5.2.5 scanf()与其它输入函数混合使用 67







5.3 删除scanf() 函数留下的'\n' 68







5.3.1 使用循环删除 68







5.3.2 使用正则表达式删除 68







5.4 小结69







第6 章 数据类型的本质 70







6.1 数据存储方式 70







6.1.1 整型数据 70







6.1.2 浮点型数据 70







6.2 基本数据类型 71







6.2.1 字符型char 71







6.2.2 整型int 73







6.2.3 浮点型float 74







6.2.4 空类型void 74







6.3 类型修饰符 75







6.3.1 修饰内存大小 75







6.3.2 修饰符号位 76







6.3.3 内存访问限制 77







6.4 sizeof() 运算符 77







6.5 衍生数据类型 78







6.6 类型转换 81







6.6.1 类型级别 82







6.6.2 隐式类型转换 82







6.6.3 强制类型转换 83







6.7 小结83







第7 章 类型错误引起的内存紊乱 84







7.1 内存非法访问 84







7.1.1 scanf() 函数格式串不匹配问题 84







7.1.2 内存状态分析 85







7.2 内存合法访问 86







7.2.1 调整变量声明顺序 87







7.2.2 合法内存的不合理使用 87







7.3 意外改写指针值 89







7.3.1 使用指针读入数据 89







7.3.2 指针值的变化 90







7.4 小结 92







第8 章 浮点数及其使用 93







8.1 浮点数 93







8.2 IEEE754 标准浮点数 93







8.2.1 规格化数 94







8.2.2 非规格化数 94







8.2.3 特殊数 94







8.3 IEEE754 标准浮点存储格式 94







8.3.1 单精度格式 95







8.3.2 双精度格式 95







8.3.3 双精度扩展格式(SPARC结构) 96







8.3.4 双精度扩展格式(x86) 96







8.4 使用浮点数时的注意事项 97







8.4.1 交换定律不适用浮点数 97







8.4.2 计算顺序影响结果 97







8.4.3 避免对两个实数做是否相等的判断 98







8.4.4 慎用浮点数作为循环变量 99







8.4.5 避免数量级相差很大的数直接加减 100







8.4.6 浮点数的乘除运算 100







8.4.7 尽量使用double 型以提高精度 100







8.4.8 浮点数的特殊数 101







8.5 小结 102







第9 章 “自顶向下,逐步求精”的程序设计方法 103







9.1 结构化程序设计 103







9.2 计数控制循环 103







9.3 哨兵控制循环 105







9.4 结构嵌套 108







9.5 算法的伪代码描述 111







9.6 小结 112







第10 章函数及其注意事项 113







10.1 函数概述 113







10.1.1 函数声明 113







10.1.2 函数定义 114







10.1.3 函数调用 117







10.1.4 函数的使用步骤和方法 117







10.2 常见问题 117







10.2.1 嵌套定义 118







10.2.2 “return”语句不完整 118







10.2.3 参数重复声明 119







10.2.4 函数头后有“;” 119







10.2.5 形参声明格式错误 119







10.2.6 返回值与返回类型不一致 120







10.2.7 期望函数返回多个值 120







10.2.8 期望函数参数双向传递 120







10.2.9 实参与形参不一致 121







10.2.10 函数定义代替函数声明 121







10.3 小结 122







第11 章 函数参数的单向值传递 123







11.1 值传递概述 123







11.2 交换两个变量的值 123







11.2.1 直接交换 123







11.2.2 使用普通形参变量通过函数实现交换 124







11.2.3 使用指针形参变量通过函数实现交换 125







11.2.4 使用指针形参变量通过交换地址实现交换 126







11.3 DEBUG 及代码剖析 127







11.3.1 普通变量作为形参 127







11.3.2 指针变量作为形参 129







11.3.3 指针变量作为形参但交换地址 132







11.4 小结 133







第12 章 递归函数 134







12.1 递归的概念 134







12.2 递归范式 134







12.3 数学函数 135







12.3.1 阶乘函数 135







12.3.2 求幂函数 136







12.3.3 求最大公约数函数 137







12.3.4 求斐波那契数列 138







12.4 递归跳跃的信任 138







12.5 其它递归示例 139







12.5.1 探测回文 139







12.5.2 折半查找 140







12.6 避免递归中常见的错误 141







12.7 小结 142







第13 章 一维数组的本质 143







13.1 一维数组的概念 143







13.2 数组的声明 143







13.3 数组名的内涵 145







13.4 “[]”运算符和数组下标引用 146







13.5 “&a”“a”和“&a[0]” 147







13.6 数组惯用法 148







13.6.1 确定数组元素的长度 148







13.6.2 直接操作数组内存 149







13.6.3 数组作为函数的形参 149







13.6.4 字符串常量——另类数组 152







13.7 小结 153







第14 章 多维数组的本质 154







14.1 多维数组的声明 154







14.2 多维数组数组名的层级关系 155







14.3 多维数组数组名的内涵 156







14.4 数组类型 157







14.5 “a”“&a”“a[0]”“&a[0]” 和“&a[0][0]” 158







14.6 指向数组的指针 159







14.7 多维数组惯用法 161







14.7.1 二维数组的一维数组操作模式 161







14.7.2 直接操作数组内存 163







14.7.3 作为函数的形参 163







14.8 小结 166







第15 章 二级指针和二维数组 167







15.1 概述 167







15.2 二级指针指向二维数组 167







15.3 通过二级指针操作二维数组 170







15.4 小A9900706E4结 172







第16 章指针 173







16.1 指针声明 173







16.2 指针的内涵 174







16.2.1 指针的类型 174







16.2.2 指针所指向的对象的类型 175







16.2.3 指针的值 176







16.2.4 指针本身所占据的内存区 176







16.3 指针的运算 176







16.3.1 指针加上或减去一个整数 176







16.3.2 两个指针相减 179







16.3.3 指针的比较 179







16.4 & 和* 运算符 180







16.5 指针和const 180







16.6 函数指针 181







16.7 小结 188







第17 章 结构体类型 189







17.1 结构体类型概述 189







17.1.1 结构体类型的定义 189







17.1.2 声明结构体类型的变量 190







17.1.3 结构体成员的基本操作 191







17.1.4 结构体类型变量的整体赋值 191







17.1.5 结构体类型的综合应用实例 194







17.1.6 结构体常量(C99) 196







17.1.7 结构体类型的其它使用方式 197







17.1.8 使用“typedef”为结构体类型定义别名 197







17.2 包含自身结构体地址类型的指针成员 198







17.3 小结 202







第18 章 结构体变量的浅拷贝和深拷贝 203







18.1 指针成员 203







18.2 动态内存分配 204







18.3 结构体变量的销毁 205







18.4 浅拷贝 205







18.4.1 直接赋值 205







18.4.2 悬空指针 207







18.5 深拷贝 208







18.5.1 重新分配内存空间 208







18.5.2 内存的独立销毁 209







18.5.3 深拷贝的调用时机 210







18.6 小结 210







第19 章 在结构体中使用函数指针 211







19.1 函数指针的概念 211







19.2 在结构体中使用函数指针 212







19.3 小结 220







第20 章动态内存分配与管理 221







20.1 野指针 221







20.2 void *——万能指针 221







20.3 数据段、代码段、栈和堆 222







20.4 内存分配与管理函数 223







20.5 动态数组 224







20.5.1 动态一维数组 224







20.5.2 动态二维数组 226







20.5.3 柔性数组(C99) 230







20.6 内存使用的常见错误及对策 231







20.6.1 结构体指针成员未初始化 231







20.6.2 未能分配足够内存 233







20.6.3 分配的内存太小 233







20.6.4 内存分配成功但未初始化 234







20.6.5 对函数的入口进行校验 234







20.7 小结 236







第21 章 用“void *”指针实现泛型和多态编程 237







21.1 多态性的概念 237







21.2 结构体和单向链表 237







21.3 函数指针 238







21.4 泛型链表 240







21.5 异质链表 242







21.6 小结 248







第22 章 泛型排序程序设计 249







22.1 泛型程序设计 249







22.1.1 泛型数据交换函数 249







22.1.2 泛型数据比较函数 250







22.2 泛型排序 251







22.2.1 qsort 函数 251







22.2.2 泛型冒泡排序 253







22.3 用指针数组实现字符串排序 254







22.3.1 基本原理 254







22.3.2 比较函数设计 254







22.3.3 实现字符串排序 255







22.4 小结 258







第23 章 变长形参列表函数的设计与使用 259







23.1 变长形参列表函数 259







23.2 头文件 259







23.2.1 va_list 变量类型 260







23.2.2 va_start() 宏 260







23.2.3 va_arg() 宏 260







23.2.4 va_end() 宏 260







23.2.5 变长形参列表函数的基本框架 261







23.3 实例分析 262







23.3.1 求平均值 262







23.3.2 按指定格式输出数据 263







23.3.3 类型格式串 264







23.4 小结 266







第24 章 PCRE2 正则表达式第三方库267







24.1 简介 267







24.2 第三方库概述 267







24.2.1 第三方库的构成 267







24.2.2 第三方库的使用配置 268







24.3 构建第三方库 268







24.3.1 下载PCRE2 第三方库 268







24.3.2 构建PCRE2 第三方库 269







24.4 在Code::Blocks 中使用静态PCRE2 第三方库 273







24.5 在Code::Blocks 中使用动态第三方库 281







24.5.1 构建动态PCRE2 第三方库282







24.5.2 使用动态PCRE2 第三方库282







24.6 通过Code::Blocks 的环境变量使用第三方库 285







24.7 通过命令行使用第三方库 286







24.8 利用“Makefile”使用第三方库288







24.9 第三方库调用方式总结 289







24.10 小结 290







第25 章CGraph2D 图形库 291







25.1 图形库概述 291







25.1.1 功能与结构 292







25.1.2 坐标系统与函数命名 292







25.2 图形库的配置与使用 293







25.2.1 配置环境变量 293







25.2.2 为Code::Blocks 配置构建参数 295







25.2.3 样例代码 298







25.2.4 运行机制 299







25.3 函数使用说明 300







25.4 小结 300







后记302
精彩片段:
 
书  评:
 
其  它:
 



| 我的帐户 | 我的订单 | 购书指南| 关于我们 | 联系我们 | 敬告 | 友情链接 | 广告服务 |

版权所有 © 2000-2002 中国高校教材图书网    京ICP备10054422号-7    京公网安备110108002480号    出版物经营许可证:新出发京批字第版0234号
经营许可证编号:京ICP证130369号    技术支持:云因信息