C/C++及其相关
-
C++语言教程张松梅编著C++语言是一个扩充了面向对象成分的C语言,它保持了C的简洁、高效,又支持面向对象的程序设计,是目前颇受欢迎的一个面向对象语言。《高等学校电子信息类系列教材:C++语言教程(第2版)》共八章,介绍了C++语言的主要语言特性,并用直观的方法讲述了面向对象的设计技术。《高等学校电子信息类系列教材:C++语言教程(第2版)》适合作为大专院校、培训班和自考班教材,也适于从事计算机软件开发和应用的人员参考。 -
数据结构许卓群...等《高等学校试用教材:数据结构》是根据原教育部颁布的高等院校计算机软件专业数据结构课程教学大纲编写的教材。全书系统地介绍了各种常用的数据结构·内容丰富,概念讲解清楚,叙述严谨流畅,逻辑性强。书中对给出的每一种算法,均先描述了它的基本思路和要点,使得算法清晰易读,便于学生理解和掌握。有较丰富的例题和习题。《高等学校试用教材:数据结构》可作为高等院校计算机软件专业的教材或参考书,也可供广大从事计算机软件工作的科技人员自学参考。《高等学校试用教材:数据结构》由吉林大学庞云阶先生、刘大有先生、山东大学董继润先生审阅。 -
C++语言编程基础教程宋振会编著标准C++是ANSI和ISO在1998年正式推出的国际化标准版本。本书便是按照此标准为基础,对C++进行了全面、详细的介绍。 本书主要内容包括编程逻辑和技术,编辑和编译C++程序,常量、变量和指针,运算运、优先级和结合律,函数、函数指针和指针函数,面向对象的编程方法(类),成员函数、构造函数和析构函数,条件判定、循环和跳转,数组、数组指针和指针数组,静态多态,类的关系,动态多态,多重继承、歧义性和虚基类,文件的输出和输入,类指针、单链表和双链表,用链表实现栈和队列。 本书编写时参考了大量的国际软件工程师培训教程,又借鉴了作者多年的编程经验和教学经验,采用符合国际性标准的编程方法和惯例,将一些高深、抽象的理论,通过大量的程序案例进行讲述。 本书是学习C++语言编程的优秀教程,内容丰富,讲述清楚,通俗易懂,实例典型而丰富,适用于C++培训学员、高等院校及职业院校的学生、其他C++编程爱好者。 -
PIC单片机C语言开发入门武锋,陈新建编著本书是一本PIC系列单片机C语言开发应用的入门级指导丛书,以美国Microchip(微芯)公司的中级产品PICl6F87X和高级产品PICl8FXX2单片机为例,首先简要介绍其硬件结构和指令系统,然后重点介绍集成开发环境、c语言的开发应用基础和C语言的开发应用实验等内容。在C语言的开发应用等内容中,主要以HI-TECH公司的PICC和PICCl8 C编译器和Microchip公司的MPLAB C18 C编译器为例,介绍这几种c编译器的特性、安装、基本应用方法及其开发应用实验等内容。附录中详细说明了HI-TECH公司的PICC和PICCl8 C编译器与Microehip公司的MPLABC18 C编译器的错误和告警信息。本书附配套光盘一张,内有新版的MPLAB IDE 6.4集成开发软件、PICC和PICCl8 C编译器(DEMO版)、MPLAB C18C编译器(DEMO版)和本书实验用的C语言源程序等内容。本书内容通俗易懂,实用性强。可供学习PIC单片机c语言开发的有关技术人员和爱好者以及高等院校相关专业的师生阅读参考。 -
C++精解和程序设计(美)Frank L.Friedman,(美)Elliot B.Koffman著;施平安译;施平安译本书采用面向对象方法介绍C++程序设计语言。第4版在强调软件工程的基本原理的同时,仍然保留了以程序设计为核心的特色。本书兼顾面向对象编程和过程式编程,确保算法组织和程序设计的基础不被忽视,因为算法组织和程序设计是本书的一个鲜明特色。鲜明的特色:*以灵活的方式讲授*案例研究强调Koffman的5步开发方法:问题规范、分析、设计、实现和测试*包含大量例子、鲜明的程序风格和语法陈列、全面的本章回顾,以及对语法和运行时错误的详细讨论*新增与知名计算机科学家的访谈录,以说明本书内容在实际中的重要性*教辅资料完备:教学幻灯片、教师手册、习题解答、练习题库及考试样题等本书在介绍C++编程语言的同时,介绍并强调了软件工程的基本原理和面向对象编程。全书内容包括;函数和自顶向下设计基础、选择和循环结构,简单数据类型、输入和输出、结构化数据类型(数组和结构)、类和对象、数据建模、递归、指针、链表、栈、队列和树等。本书可以作为大专院校计算机及相关专业的程序设计基础课程的教材,也可以作为C++语言程序设计的自学教材。 -
C++大学教程(美)Eric Nagler著;侯普秀,曹振新译内容简介目录 本书内容详尽,示例丰富,通过400多个简短易懂的示例深入介绍了C++程序设计方法。全书共分18章,前5章讲解了C++编程和C语言过程化编程之间的区别,内容包括从C到C++的迁移、命名空间、输入输出基础、引用变量和动态内存分配;后面各章介绍了一些常用类及其用、构造函数和析构函数、异常处理、函数重载、继承、模板、输入/输出流、操丛符、string类及标准模板库等内容;本书最后的附录A列出了相关的参考书目,附录B则提供了使用C++的一些准则。本书结构特色实用性和可操作性强。提供了大量的编程示例,帮助学生透彻理解所学的概念。通过大量的练习题进一步巩固所学的内容,确保学生能够真正掌握各章节的内容。科简短明了的"小结"部分总结了各章节的主题内容,使学生对所学的内容一个整体的认识。"注意"部分重点说明了与章节中所介绍概念相关的重要内容。 第1章 由C迁移到C++1.1 概述1.2 C与C++的比较1.3编译器如何识别C++程序1.4预处理器如何识别环境1.5新的注释风格1.6永远不要假定(隐式地使用int类型)1.7 main()的默认返回值1.8声明与定义的区别1.9函数声明中的形参名称1.1 O 函数定义中的形参名称1.1l 所有的函数在调用前必须先声明l-1 2空圆括号的含义1.13函数参数的默认值1.14初始化与赋值的区别1.15放置变量声明的地方1.16 for循环内的变量声明1.17标记名成为类型名1.18 C++与C中枚举类型的区别1.1 9初始化全局变量1.20数组初始化1.2 1 布尔类型1.22 void木指针1.23 使用O,而不是宏NULL1.24 关键字const1.24.1 所有的常量必须初始化1.24.2将常量值的参数传递给函数的含义1.24.3 函数返回值为常量的含义1.24.4 const如何影响指针1.24.5 C++与C中字符数组的区别1.24.6如何支持char const*类型的数组1.24.7 C以及C++处理const方式的区别1.24.8使用const而不是#define1.24 变量的连接1.25新的类型强制转换风格1.25.1 类型强制转换以及转换的区别1.25.2类型强制转换的一般格式1.25.3 static cast1.25.4 reinterpret cast1.25.5 const-cast1.25.6您不会犯错1.26 C以及C++关键字第2章命名空间2.1 概述2.2存在的问题2.3 如何创建命名空间2.4作用域分解运算符2.5 如何访问命名空问的成员2.5.1 直接访问命名空间的成员2.5.2 using声明:访问命名空间成员的另一种方法2.5.3 using指令:访问命名空间成员的另一种方法2.6 小心避免不明确的情况2.7无名的命名空间2.8命名空间的别名2.9 Koenig查找规则第3章输入/输出基础3.1 概述3.2使用新函数的理由3.3头文件:命名约定3.4 iostream头文件3.5 cout对象3.5.1插入运算符3.5.2显式地限定cout对象3.5.3使用using声明来访问cout对象3.5.4使用using指令来访问cout对象3.6关于正确使用std命名空间的建议3.7 了解运算符的优先级3.8输出格式3.9 cin对象3.1O检查文件是否结束第4章引用变量4.1 概述4.2存在的问题4.3如何创建引用变量4.4所有的引用都必须初始化4.5 引用的作用4.6使用const限定引用4.7何时不需要使用引用4.8没有"常量引用"4.9创建对指针的引用4.10创建对数组的引用4.11 由函数返回引用第5章动态内存分配5.1 概述5.2如何为单个对象分配动态内存5.3如何初始化基本类型5.4空圆括号的含义5.5如何释放单个对象的空闲空间5.6如何为对象的数组分配空闲空间5.7如何释放对象数组的空闲空间5.8保持平衡5.9如何使用new和delete在空闲存储区中存储字符串5.10如何分配和删除多维数组5.11 命名该空间5.12两个程序输出示例第6章类6.1 概述6.2 C中的结构6.2.1 全局函数6.2.2 C存在的问题6.3初识封装6.3.1修订后的Circle抽象6.3.2必须支持常量对象6.4结构与类6.5类的用途6.6类的组件6.7如何编写类定义6.7.1 类声明与类定义6.7.2关于输入/输出类6.8数据隐藏的原则6.9访问限定符6.9.1 private关键字6.9.2 public关键字6.9.3 protected关键字6.9.4选择编码风格6.10模块化并实现隐藏6.10.1如何模块化6.10.2用户的任务6.10.3本节小结6.1 1 如何通过实例来访问类成员6.12 内联函数6.12.1 内联函数的含义6.12.2 内联函数与宏的对比6.12.3 使得内联函数对编译器有效6.12.4放置内联函数的地方6.12.5 内联函数的连接6.12.6如何编写全局成员内联函数6.12.7 如何编写类成员内联函数6.12.8隐式内联和显式内联的比较6.13 mutable关键字6.14如何显示类的内容6.15类中的枚举类型6.15.1使用枚举的原因6.1 5.2私有枚举6.1 5.3 公有枚举6.15.4 "Enum Hack"的作用第7章构造函数和析构函数7.1 概述7.2构造函数的定义7.2.1语法规则7.2.2何时不调用构造函数7.2.3编译器提供的默认构造函数7.2.4默认的构造函数:普遍定义7.2.5初始化常量对象7.2.6构造函数重载7.2.7不能直接调用构造函数7.3析构函数的定义7.3.1编译器提供的析构函数7.3.2析构函数的作用7.3.3编写您自己的析构函数7.3.4语法规则7.4如何实例化类并调用默认构造函数7.5如何实例化类并向构造函数传递参数7.6如何阻止使用默认构造函数的实例化7.7隐式类型转换7.8复制构造函数7.8.1默认复制构造函数7.8.2复制构造函数的语法7.8.3复制构造函数的数量7.8.4浅复制与深复制7.8.5编写您自己的复制构造函数7.8.6如何阻止对象复制7.9函数风格的强制转换7.10初始化与赋值7.11基/成员初始化列表7.11.1默认初始化7.11.2强制使用基/成员初始化列表7.11.3 另一种初始化调用的情况7.12关于指针7.13 形参名与类成员名7.14非静态数据成员的初始化顺序7.15 基本类型的数组作为非静态数据成员7.16用户自定义类型数组作为非静态数据成员7.17如何创建用户自定义实例的数组7.18如何声明常量数据成员数组7.19如何在空闲存储区中创建用户自定义类型7.20如何在空闲存储区中创建用户自定义类型的数组7.2l调用new时的语法第8章类的其他特征8.1 概述8.2 this指针8.2.1 解引用this指针来复制调用对象8.2.2解引用this指针以允许链接函数8.3静态类数据成员8.3.1 在类的定义中初始化静态类数据成员8.3.2静态成员函数8.3.3用于生成随机数的类8.3.4 Die类8.3.5 Dice类8.4类的大小8.5友元函数8.5.1 类如何授权一个函数作为它的友元函数8.5.2成员函数和非成员函数8.5.3 使用非成员非友元函数替代友元函数8.5.4在命名空间中声明类的友元函数8.6友元类8.7 类的封装8.8运算符转换函数8.8.1 用途8.8.2语法8.9类成员指针8.9.1全局函数指针8.9.2指向非静态类成员函数的指针8.9.3 使用指向非静态成员函数的指针调用函数8.9.4指向静态类成员函数的指针第9章异常处理9.1 概述9.2如何抛出异常9.3如何捕获异常9.4 catch代码块的匹配处理9.5异常处理的一个简单示例9.6释放堆栈9.7如果调用new失败怎么办9.8如何防止new抛出异常9.9异常的传播9.10如何处理指向空闲空间的指针9.11 不能销毁还没有创建的对象9.12重新抛出对象9.13 从子对象成员中捕获抛出的异常9.14function-try-blocks9.15子对象成员和指针的混合使用9.16对象的局部结构9.17编写异常.安全代码9.17.1 堆栈中的简单对象9.17.2堆栈中的对象数组9.17.3 空闲存储区中的简单对象9.17.4再论空闲存储区中的简单对象9.17.5 空闲存储区中的对象数组9.17.6再论空闲存储区中的对象数组9.18析构函数和异常处理9.19异常规范9.20 出错条件9.20.1 意外错误9.20.2终止错误9.21 编译器如何对待异常规范9.22为类定义operator new()函数第10章函数重载10.1 概述lO.2几个关于函数重载的示例10.3忽略返回类型10.4 const限定参数按值传递l0.5 const限定参数按指针传递10.6 const限定参数按引用传递10.7可变成员函数和常量成员函数10.8 重载决议10.9根据指针类型重载10.10名称重整10.10.1如何避免名称重整10.10.2类型.安全连接10.11运算符函数重载10.11.1运算符优先级表10.11.2重载运算符的命名10.11.3默认参数。10.11.4 C++自带的运算符10.11.5不能改变优先级10.11.6不能改变"Narity"10.11.7不能改变结合性10.11.8成员函数与非成员函数10.11.9至少支持一个类实例10.11.10中缀表示法和函数表示法10.11.1l 二元成员函数和隐式类型转换10.11.12多次重载或者允许隐式类型转换10.11.13运算符的重载10.11.14赋值运算符10.11.15函数调用运算符10.11.16下标运算符10.11.17间接成员运算符10.11.18复合赋值运算符10.11.19自增运算符和自减运算符10.11.20重载逗号运算符10.11.21重载逻辑与和逻辑或运算符10.11.22重载插入运算符10.11.23运算符小结第11章继承11.1 概述11.2 内存中的派生类实例1l.3 使用继承创建is-a关系11.4如何定义派生类11.5再论结构和类11.6 关键字protected11.7访问特权11.8基类"存取器"函数11.9修改继承访问11.10 函数隐藏11.11 派生类成员函数如何调用基类成员函数11.12管理函数11.12.1如何编写管理函数11.12.2派生类到基类的标准转换11.12.3 隐藏非成员函数11.12.4不要对数组进行向上类型转换11.1 3 多态性11.14多态性和虚函数11.14.1 友好的程序代码和不友好的程序代码11.14.2重写虚函数11.14.3虚析构函数11.14.4从基类的构造函数中调用虚函数11.1 5抽象基类11.15.1 再论关于贷款的示例11.15.2关于虚函数的异常规范11.16里氏代换原则11.17多重继承11.17.1 虚基类11.17.2初始化虚基类第12章模板12.1 概述12.2 函数模板12.2.1 不使用宏的原因12.2.2如何编写函数模板12.2.3优化代码12.2.4在何处使用函数模板12.2.5针对不同的参数类型进行实例化12.2.6显式地指定类型12.2.7默认的函数参数12.2.8完全特殊化函数模板12.2.9如何调用特殊化的函数12.2.10对特殊化和重载的选择12.2.11特殊化greater()函数模板12.3类模板12.3.1如何定义类模板12.3.2在类定义之外定义成员12.3.3实例化类模板12.3.4另一个模板的模板实例化12.3.5默认模板参数12.3.6在类模板中声明另一个友元类12.3.7在类模板中声明友元函数12.3.8特殊化类模板12.3.9在类模板中嵌入类模板12.3.10从类模板中派生新类12.4非类型模板参数12.4.1 默认的模板参数和特殊化12.4.2关于使用非类型模板参数的有趣示例12.5 成员模板12.6模板模式12.7关键字typename第13章运行时类型信息l3.1 概述13.2动态转型态13.3动态转型态是如何工作的13.4关键字typeid第14章输出流14.1 概述14.2实例std::cerr和std::clog14.3如何格式化输出14.3.1位格式标志14.3.2如何打开位格式标志14.3.3 如何以合适的基数显示整数14.3.4如何显示整数的基数设置14.3.5如何显示整数的符号14.3.6如何将输出显示为大写字母14.3.7如何显示字符14.3.8如何设置输出字段宽度14.3.9如何指定填充字符14.3.10如何指定字段对齐14.3.1 1 如何格式化浮点型数值14.4如何显示bool类型14.5如何显示地址14.6如何输出到内存缓冲区14.6.1 成员函数ostream::flush()14.6.2预定义的stdio和iostream流的混合使用第15章输入流l5.1 概述15.2如何检查错误15.2.1错误报告标志15.2.2访问成员函数15.2.3直接测试iostream对象15.2.4成员函数std::basic ios::clear()15.2.5如何清空输入流的缓冲区l5.3 字符输入15.3.1使用提取运算符实现对字符串的输入15.3.2限制输入字符的个数15.3.3使用std::istream::getline()实现字符串输入第16章操纵符16.1 概述16.2操纵符的格式16.3一些简单的操纵符l6.4 不带参数调用的内置操纵符16.5使用带有一个参数的操纵符16.6使用带有一个参数的内置操纵符第17章文件输入/输出17.1 概述17.2文件输入/输出类17.3文件输出17.3.1文件名参数17.3.2文件模式参数17.3.3验证文件是否打开17.3.4关闭打开的文件17.3.5输出磁盘文件示例1 7.4 文件输入1 7.5文件位置标记l 7.6 文件更新1 7.7 二进制模式17.8未格式化的输出17.9未格式化的输入17.10重定向I/O第1 8章string类与标准模板库18.1概述18.2 string类l8.3标准模板库18.3.1 std::vector类18.3.2迭代器18.3.3迭代器的类型18.3.4基于string的I/O18.3.5标准模板库中的算法18.3.6标准模板库的主要容器18.3.7比较对象附录A参考书目附录B C++准则 -
纯粹C++编程教程(美)Amir Afzal著;吴平译;吴平译本书是专门为具有C语言编程知识的读者与学生编写的,是论述C++语言概念及语法的通用C++书,它围绕C++语言这个中心对全书进行谋篇布局,从介绍非面向对象的函数和运算符开始,逐步过渡到引出C++面向对象特性,讨论更复杂的概念。读者凭借该书打下坚实的C++知识基础之后,即可触类旁通、举一反三,在C++理解和实践方面满怀信心地更上一层楼,把C++语言知识运用到自己感兴趣的领域。本书特点:每章内容简明扼要,并配有说明、例子、表格和图形;用图标和颜色提高文本可读性;体例保持一致性;每章最后附有复习题和编程练习。本书配套光盘内容为部分程序源代码。 -
液晶显示器的C语言程序设计李晶皎,刘天华,丁言镁编著本书讲述用c语言开发液晶显示应用系统的技术。本书详尽介绍了目前国内正在使用的液晶显示模块控制器的工作原理,给出了用Freescale公司8位微控制器M68HC08的C语言程序设计的例程和相关的硬件电路。液晶控制器具体有:HD44780U、SEDl520、T6963C、SEDl335、HD61830、KS0108B/HD61202、ST7920、SEDl565。本书由浅入深,内容丰富新颖,并配有程序源代码光盘,适合使用C语言开发实用系统的读者阅读,也适合大专院校从事微控制器、嵌入式系统等研发的师生参考。 -
C语言的科学和艺术(美)Eric S.Roberts著;翁惠玉[等]译本书是计算机科学的经典教材,介绍了计算机科学的基础知识和程序设计的专门知识。本书以介绍ANSIC为主线,不仅涵盖C语言的基本知识,而且介绍了软件工程技术以及如何应用良好的程序设计风格进行开发等内容。本书采用了库函数的方法,强调抽象的原则,详细阐述了库和模块化开发。此外,本书还利用大量实例讲述解决问题的全过程,对开发过程中常见的错误也给出了解决和避免的方法。本书既可作为高等院校计算机科学入门课程及C语言入门课程的教材,也是C语言开发人员的极佳参考书。本书前言致学生欢迎你!拿起这本书,你就迈进了计算机科学的世界—这门学科出现在半世纪以前,现在却成为这个时代最具生机和活力的学科之一。在几十年的发展过程中,计算机几乎使所有领域中看似不可能的事情成为可能。由于计算机可在瞬间将信息传递到任何地方,所以今天的企业家能以空前的规模经营跨国公司。由于计算机可进行必要的、但人工很难完成的计算,科学家才能解决许多问题。电影人利用计算机制作出更具感染力的视觉效果。由于计算机能处理医学中大量的信息处理,因此医生能对患者的病情做出更精确的诊断。计算机技术正在飞速发展。目前我们已经看到的优势与新的世纪将要经历的发展相比肯定将相形见绌。最近50年,计算机已经对世界产生了深远影响,在新的世纪亦将如此。今日的学生将会是执行这项伟大的工程的中流砥柱。要做到这一点,就必须懂得如何使用计算机。和其他值得掌握的技能一样,理解计算机的工作原理以及学会怎样控制它们是需要花费时间的。这一切不可能一蹴而就,必须从某个起点开始循序渐进。2500年前,中国的哲学家老子曾说过:“千里之行,始于足下”。本书就是一个很好的起点。然而对很多人来说,万事开头难。许多学生在计算机面前束手无策,认为计算机科学超出了他们的理解范围。可是基本的程序设计并不需要具备高等数学和电子学的知识。在程序设计中,最重要的是能否从陈述问题过渡到解决问题。要做到这一点,就必须以逻辑方式考虑问题。训练自己用计算机能够理解的方式表达自己的逻辑。最重要的是,不要被困难和挫折压倒,要坚持到底。若能坚持下来,就会发现解决问题是件多么令人兴奋的事情,它所带来的喜悦足以让你忘却学习过程中遇到的任何挫折。本书旨在教授程序设计基础和C语言基础。C语言是当今计算机产业中处于主导地位的程序设计语言。本书不但介绍了程序设计中的“为什么”,还介绍了“如何做”,使读者对程序设计有总体的印象。为使读者避免出现那些阻碍学习的错误,本书在结构上做出了精心安排,可以帮助读者掌握重点。接下来将总结本书在结构上的一些独具匠心之处,并说明如何在学习过程中高效地利用本书。 -
C++编程艺术(美)Herbert Schildt著;曹蓉蓉,刘小荷翻译;曹蓉蓉译本书不同于大多数其他的C++书籍。其他的C++书籍讲授语言的基础,而本书展示了如何应用C++在更大的范围内完成有趣的、有用的、甚至是神秘的程序设计任务。在此过程中充分显示了C++语言的强大功能和优雅性。大致来说,本书包含两类应用程序,第一类称为“纯代码”,因为它们注重于扩展C++程序设计环境本身。第2章的垃圾回收器,第3章的线程控制面板以及第8章的定STL容器都是这种类型的示例。第二类应用程序显示了如何应用C++来完成各种计算任务。例如,第5章开发了一个可以断点续传的网格下载工具,第6章给出了一个如何建立财务应用程序的范例,第8章中应用C++实现了人工智能应用。 本书以一段独特有趣的代码结束:Mini C++解释程序,这个程序可以解释C++的一个小子集。Mini C++解释程序提示了C++的关键字和语法是如何一起工作从而组成这门语言的语法的。更重要的是,这可以使您了解这门语言的内部机制,并且显示了隐藏在C++设计背后的一些原因。使用Mini C++解释程序不仅有趣,它还可以用作开发您自己的语言的起点,还可以用作其他语言的解释程序。本书每一章都提供了可以直接使用的代码。例如,第2章的垃圾回收器可以适用于许多程序设计任务。然而,只有把这些应用程序作为自己的开发起点,才会获益匪浅。例如,可以进一步完善第8章的Internet文件下载工具,使其可以在某个指定的时间开始下载,或者可以监控一个下载站点,保持下载最新的文件。总之,可以将这些没的程序和子系统作为您开发自己项目的跳板。
