C和C++程序员面试秘笈 PDF 超清版

  • 更新时间:
  • 7171人关注
  • 点击下载

给大家带来的一篇关于C/C++面试相关的电子书资源,介绍了关于C面试、C++面试、程序员面试方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小64 MB,董山海编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.2分

资源详情相关推荐
C和C++程序员面试秘笈
  • 出版社:人民邮电出版社
  • 作者:董山海
  • 大小:64 MB
  • 类别:C/C++面试
  • 热度:915
  • Spring MVC面试专题及答案
  • C语言深度解剖:解开程序员面试笔试的秘密
  • 嵌入式C语言面试题汇总
  • C/C++ 面试基础知识总结
  • 读者评价

    虽有一些错误,但这本算很用心的了,整理的也不错,条理性很强。
    适合从事C或者是C++工作的程序员进行面试前学习,提前做好准备工作。
    一个小白去面试C相关工作的必读书籍

    内容介绍

    众多高级语言都从C/C++有所借鉴,所以说C/C++的语言基础对从事软件开发的人员来说非常重要。
    《C和C++程序员面试秘笈》是一本解析C/C++面试题的书,可以帮助求职者更好地准备面试。《C和C++程序员面试秘笈》共包含12章,囊括了目前企业中常见的面试题类型和考点,包括C/C++程序基础,预处理、const、static与sizeof,引用和指针,字符串,位运算与嵌入式编程,C++面向对象,C++继承和多态,数据结构,排序,泛型编程,STL,算法和逻辑思维等最常见的面试题。《C和C++程序员面试秘笈》通过技术点解析、代码辅佐的方式让读者能深刻领会每个考点背后的技术。
    《C和C++程序员面试秘笈》紧扣面试精髓,对各种技术的剖析一针见血,是目前想找工作的C/C++程序员和刚毕业的大学生的面试宝典。

    目录

    • 第1章C/C++程序基础
    • 面试题1看代码写输出——一般赋值语句
    • 面试题2看代码写输出——C++域操作符
    • 面试题3看代码写输出——i++和++i的区别
    • 面试题4i++与++i哪个效率更高
    • 面试题5选择编程风格良好的条件比较语句
    • 面试题6看代码写结果——有符号变量与无符号变量的值的转换
    • 面试题7不使用任何中间变量如何将a、b的值进行交换
    • 面试题8C++与C有什么不同
    • 面试题9如何理解C++是面向对象化的,而C是面向过程化的
    • 面试题10标准头文件的结构
    • 面试题11#include 和#include "head.h" 有什么区别
    • 面试题12C++中main函数执行完后还执行其他语句吗
    • 第2章预处理、const、static与sizeof
    • 面试题1预处理的使用
    • 面试题2用#define实现宏并求最大值和最小值
    • 面试题3宏定义的使用
    • 面试题4看代码写输出——宏参数的连接
    • 面试题5用宏定义得到一个字的高位和低位字节
    • 面试题6用宏定义得到一个数组所含的元素个数
    • 面试题7找错——const的使用
    • 面试题8说明const与#define的特点及区别
    • 面试题9C++中const有什么作用(至少说出3个)
    • 面试题10static有什么作用(至少说出2个)
    • 面试题11static全局变量与普通的全局变量有什么区别
    • 面试题12看代码写结果——C++类的静态成员
    • 面试题13使用sizeof计算普通变量所占空间大小
    • 面试题14使用sizeof计算类对象所占空间大小
    • 面试题15使用sizeof计算含有虚函数的类对象的空间大小
    • 面试题16使用sizeof计算虚拟继承的类对象的空间大小
    • 面试题18sizeof与strlen有哪些区别
    • 面试题19sizeof有哪些用途
    • 面试题20找错——使用strlen()函数代替sizeof计算字符串长度
    • 面试题21使用sizeof计算联合体的大小
    • 面试题22#pragma pack的作用
    • 面试题23为什么要引入内联函数
    • 面试题24为什么inline能很好地取代表达式形式的预定义
    • 面试题25说明内联函数使用的场合
    • 面试题26为什么不把所有的函数都定义成内联函数
    • 面试题27内联函数与宏有什么区别
    • 第3章引用和指针
    • 面试题1一般变量引用
    • 面试题2指针变量引用
    • 面试题3看代码找错误——变量引用
    • 面试题4如何交换两个字符串
    • 面试题5程序查错——参数引用
    • 面试题6参数引用的常见错误
    • 面试题7指针和引用有什么区别
    • 面试题8为什么传引用比传指针安全
    • 面试题9复杂指针的声明
    • 面试题10看代码写结果——用指针赋值
    • 面试题11指针加减操作
    • 面试题12指针比较
    • 面试题13看代码找错误——内存访问违规
    • 面试题14指针的隐式转换
    • 面试题15指针常量与常量指针的区别
    • 面试题16指针的区别
    • 面试题17找错——常量指针和指针常量的作用
    • 面试题18this指针的正确叙述
    • 面试题19看代码写结果——this指针
    • 面试题20指针数组与数组指针的区别
    • 面试题21找错——指针数组和数组指针的使用
    • 面试题22函数指针与指针函数的区别
    • 面试题23数组指针与函数指针的定义
    • 面试题24各种指针的定义
    • 面试题25代码改错——函数指针的使用
    • 面试题26看代码写结果——函数指针的使用
    • 面试题27typedef用于函数指针定义
    • 面试题28什么是“野指针”
    • 面试题29看代码查错——“野指针”的危害
    • 面试题30有了malloc/free,为什么还要new/delete
    • 面试题31程序改错——指针的初始化
    • 面试题32各种内存分配和释放的函数的联系和区别
    • 面试题33程序找错——动态内存的传递
    • 面试题34动态内存的传递
    • 面试题35比较分析两个代码段的输出——动态内存的传递
    • 面试题36程序查错——“野指针”用于变量值的互换
    • 面试题37内存的分配方式有几种
    • 面试题38什么是句柄
    • 面试题39指针与句柄有什么区别
    • 第4章字符串
    • 面试题1使用库函数将数字转换为字符串
    • 面试题2不使用库函数将整数转换为字符串
    • 面试题3使用库函数将字符串转换为数字
    • 面试题4不使用库函数将字符串转换为数字
    • 面试题5编程实现strcpy函数
    • 面试题6编程实现memcpy函数
    • 面试题7strcpy与memcpy的区别
    • 面试题8改错——数组越界
    • 面试题9分析程序——数组越界
    • 面试题10分析程序——打印操作可能产生数组越界
    • 面试题11编程实现计算字符串的长度
    • 面试题12编程实现字符串中子串的查找
    • 面试题13编程实现字符串中各单词的翻转
    • 面试题14编程判断字符串是否为回文
    • 面试题15编程实现stcmp库函数
    • 面试题16编程查找两个字符串的最大公共子串
    • 面试题17不使用printf,将十进制数以二进制和十六进制的形式输出
    • 面试题18编程实现转换字符串、插入字符的个数
    • 面试题19字符串编码例题
    • 面试题20反转字符串,但其指定的子串不反转
    • 面试题21编写字符串反转函数strrev
    • 面试题22编程实现任意长度的两个正整数相加
    • 面试题23编程实现字符串的循环右移
    • 面试题24删除指定长度的字符
    • 面试题25字符串的排序及交换
    • 面试题26编程实现删除字符串中所有指定的字符
    • 面试题27分析代码——使用strcat连接字符串
    • 面试题28编程实现库函数strcat
    • 面试题29编程计算含有汉字的字符串长度
    • 面试题30找出01字符串中0和1连续出现的最大次数
    • 面试题31编程实现字符串的替换
    • 第5章位运算与嵌入式编程
    • 面试题1位制转换
    • 面试题2看代码写出结果——位运算
    • 面试题3设置或清除特定的位
    • 面试题4计算一个字节里有多少bit被置1
    • 面试题5位运算改错
    • 面试题6运用位运算交换a、b两数
    • 面试题7列举并解释C++中的4种运算符转化以及它们的不同点
    • 面试题8用#define声明一个常数
    • 面试题9如何用C语言编写死循环
    • 面试题10如何访问特定位置的内存
    • 面试题11对中断服务代码的评论
    • 面试题12看代码写结果——整数的自动转换
    • 面试题13关键字static的作用是什么
    • 面试题14关键字volatile有什么含义
    • 面试题15判断处理器是Big_endian还是Little_endian
    • 面试题16评价代码片断——处理器字长
    • 第6章C++面向对象
    • 面试题1描述面向对象技术的基本概念
    • 面试题2判断题——类的基本概念
    • 面试题3选择题——C++与C语言相比的改进
    • 面试题4class和struct有什么区别
    • 面试题5改错——C++类对象的声明
    • 面试题6看代码写结果——C++类成员的访问
    • 面试题7找错——类成员的初始化
    • 面试题8看代码写结果——静态成员变量的使用
    • 面试题9与全局对象相比,使用静态数据成员有什么优势
    • 面试题10有哪几种情况只能用intialization list,而不能用assignment
    • 面试题11静态成员的错误使用
    • 面试题12对静态数据成员的正确描述
    • 面试题13main函数执行前还会执行什么代码
    • 面试题14C++中的空类默认会产生哪些类成员函数
    • 面试题15构造函数和析构函数是否可以被重载
    • 面试题16关于重载构造函数的调用
    • 面试题17构造函数的使用
    • 面试题18构造函数explicit与普通构造函数的区别
    • 面试题19explicit构造函数的作用
    • 面试题20C++中虚析构函数的作用是什么
    • 面试题21看代码写结果——析构函数的执行顺序
    • 面试题22复制构造函数是什么?什么是深复制和浅复制
    • 面试题23编译器与默认的copy constructor
    • 面试题24写一个继承类的复制函数
    • 面试题25复制构造函数与赋值函数有什么区别
    • 面试题26编写类String的构造函数、析构函数和赋值函数
    • 面试题27了解C++类各成员函数的关系
    • 面试题28C++类的临时对象
    • 面试题29复制构造函数和析构函数
    • 面试题30看代码写结果——C++静态成员和临时对象
    • 面试题31什么是临时对象?临时对象在什么情况下产生
    • 面试题32为什么C语言不支持函数重载而C++能支持
    • 面试题33判断题——函数重载的正确声明
    • 面试题34重载和覆写有什么区别
    • 面试题35编程题——MyString类的编写
    • 面试题36编程题——各类运算符重载函数的编写
    • 面试题37看代码写输出——new操作符重载的使用
    • 第7章C++继承和多态
    • 面试题1C++类继承的三种关系
    • 面试题2C++继承关系
    • 面试题3看代码找错——C++继承
    • 面试题4私有继承有什么作用
    • 面试题5私有继承和组合有什么相同点和不同点
    • 面试题6什么是多态
    • 面试题7虚函数是怎么实现的
    • 面试题8构造函数调用虚函数
    • 面试题9看代码写结果——虚函数的作用
    • 面试题10看代码写结果——虚函数
    • 面试题11虚函数相关的选择题
    • 面试题12为什么需要多重继承?它的优缺点是什么
    • 面试题13多重继承中的二义性
    • 面试题14多重继承二义性的消除
    • 面试题15多重继承和虚拟继承
    • 面试题16为什么要引入抽象基类和纯虚函数
    • 面试题17虚函数与纯虚函数有什么区别
    • 面试题18程序找错——抽象类不能实例化
    • 面试题19应用题——用面向对象的方法进行设计
    • 面试题20什么是COM
    • 面试题21COM组件有什么特点
    • 面试题22如何理解COM对象和接口
    • 面试题23简述COM、ActiveX和DCOM
    • 面试题24什么是DLL HELL
    • 第8章数据结构
    • 面试题1编程实现一个单链表的建立
    • 面试题2编程实现一个单链表的测长
    • 面试题3编程实现一个单链表的打印
    • 面试题4编程实现一个单链表节点的查找
    • 面试题5编程实现一个单链表节点的插入
    • 面试题6编程实现一个单链表节点的删除
    • 面试题7实现一个单链表的逆置
    • 面试题8寻找单链表的中间元素
    • 面试题9单链表的正向排序
    • 面试题10判断链表是否存在环型链表问题
    • 面试题11有序单链表的合并
    • 面试题12约瑟夫问题的解答
    • 面试题13编程实现一个双向链表的建立
    • 面试题14编程实现一个双向链表的测长
    • 面试题15编程实现一个双向链表的打印
    • 面试题16编程实现一个双向链表节点的查找
    • 面试题17编程实现一个双向链表节点的插入
    • 面试题18编程实现一个双向链表节点的删除
    • 面试题19实现有序双向循环链表的插入操作
    • 面试题20删除两个双向循环链表的相同结点
    • 面试题21编程实现队列的入队、出队、测长、打印
    • 面试题22队列和栈有什么区别
    • 面试题23简答题——队列和栈的使用
    • 面试题24选择题——队列和栈的区别
    • 面试题25使用队列实现栈
    • 面试题26选择题——栈的使用
    • 面试题27用C++实现一个二叉排序树
    • 面试题28使用递归与非递归方法实现中序遍历
    • 面试题29使用递归与非递归方法实现先序遍历
    • 面试题30使用递归与非递归方法实现后序遍历
    • 面试题31编写层次遍历二叉树的算法
    • 面试题32编写判别给定二叉树是否为二叉排序树的算法
    • 第9章排序
    • 面试题1编程实现直接插入排序
    • 面试题2编程实现希尔(Shell)排序
    • 面试题3编程实现冒泡排序
    • 面试题4编程实现快速排序
    • 面试题5编程实现选择排序
    • 面试题6编程实现堆排序
    • 面试题7实现归并排序的算法(使用自顶向下的方法)
    • 面试题8使用基数排序对整数进行排序
    • 面试题9选择题——各排序算法速度的性能比较
    • 面试题10各排序算法的时间复杂度的比较
    • 第10章泛型编程
    • 面试题1举例说明什么是泛型编程
    • 面试题2函数模板与类模板分别是什么
    • 面试题3使用模板有什么缺点?如何避免
    • 面试题4选择题——类模板的实例化
    • 面试题5解释什么是模板的特化
    • 面试题6部分模板特例化和全部模板特例化有什么区别
    • 面试题7使用函数模板对普通函数进行泛型化
    • 面试题8使用类模板对类进行泛型化
    • 面试题9通过类模板设计符合要求的公共类
    • 第11章STL(标准模板库)
    • 面试题1什么是STL
    • 面试题2具体说明STL如何实现vector
    • 面试题3看代码回答问题——vector容器中iterator的使用
    • 面试题4看代码找错——vector容器的使用
    • 面试题5把一个文件中的整数排序后输出到另一个文件中
    • 面试题6list和vector有什么区别
    • 面试题7分析代码问题并修正——list和vector容器的使用
    • 面试题8stl::deque是一种什么数据类型
    • 面试题9在做应用时如何选择vector和deque
    • 面试题10看代码找错——适配器stack和queue的使用
    • 面试题11举例说明set的用法
    • 面试题12举例说明map的用法
    • 面试题13STL中map内部是怎么实现的
    • 面试题14map和hashmap有什么区别
    • 面试题15什么是STL算法
    • 面试题16分析代码功能——STL算法的使用
    • 面试题17vector中的erase方法与algorithm中的remove有什么区别
    • 面试题18什么是auto_ptr(STL智能指针)?如何使用
    • 面试题19看代码找错——智能指针auto_ptr的使用
    • 面试题20智能指针如何实现
    • 面试题21使用std::auto_ptr有什么方面的限制
    • 面试题22如何理解函数对象
    • 面试题23如何使用bind1st和bind2nd
    • 面试题24实现bind1st的函数配接器
    • 第12章智力测试题
    • 面试题1元帅领兵
    • 面试题2两龟赛跑
    • 面试题3电视机的价格
    • 面试题4这块石头究竟有多重
    • 面试题5四兄弟的年龄
    • 面试题6爬楼梯
    • 面试题73只砝码称东西
    • 面试题8称米
    • 面试题9比萨饼交易
    • 面试题10伊沙贝拉时装精品屋
    • 面试题11烧绳子的时间计算问题
    • 面试题12给工人的金条
    • 面试题13被污染的药丸
    • 面试题14称量罐头
    • 面试题15有20元钱可以喝到几瓶汽水
    • 面试题16判断鸟的飞行距离
    • 面试题17按劳取酬
    • 面试题18空姐分配物品
    • 面试题19消失的1元钱
    • 面试题20分物品
    • 面试题21称出4升的水
    • 面试题22通向诚实国和说谎国的路
    • 面试题23排序问题
    • 面试题24两个同一颜色的果冻
    • 面试题25怎样称才能用3次就找到球
    • 面试题26计算生日是哪一天
    • 面试题273个女儿的年龄
    • 面试题28取回黑袜和白袜
    • 面试题29谁先击完40下鼠标
    • 面试题30聪明人是怎样发财的
    • 面试题31谁打碎了花瓶
    • 面试题32大有作为
    • 面试题33宴会桌旁
    • 面试题34过桥问题
    • 面试题35一句不可信的话
    • 面试题36海盗分宝石
    • 面试题37如何推算有几条病狗
    • 面试题38判断谁是盗窃犯
    • 面试题39向导
    • 面试题40扑克牌问题
    • 面试题41谁是机械师
    • 面试题42帽子的颜色
    • 面试题43两个大于1小于10的整数
    • 面试题44谁用1美元的纸币付了糖果钱
    • 面试题45究竟有哪些人参加了会议
    • 面试题46小虫
    • 面试题47相遇
    • 面试题48约会
    • 面试题4930秒答题
    • 面试题501分钟答题
    • 面试题51现代斯芬克斯之谜
    • 面试题52所有开着的灯的编号
    精选笔记:C++面试题之结构体内存对齐计算问题总结大全

    11小时59分钟前回答

    前言

    本文给大家介绍的是关于C++结构体内存对齐计算的相关内容,内存对齐计算可谓是笔试题的必考题,但是如何按照计算原则算出正确答案一开始也不是很容易的事,所以专门通过例子来复习下关于结构体内存对齐的计算问题。话不多说,来一起看看详细介绍吧。

    编译环境:vs2015

    对齐原则:

          原则1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。

          原则2:结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。

          原则3:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。

    默认对齐值:

    Linux 默认#pragma pack(4)

    window 默认#pragma pack(8)

    注:可以通过预编译命令#pragma pack(n) ,n=1,2,4,8,16来改变这一系数,其中的n就是指定的“对齐系数”。

    例一:一字节对齐

    第一步: 成员数据对齐

    #pragma pack(1)
    struct AA {
     int a; //长度4 < 1 按1对齐;偏移量为0;存放位置区间[0,3]
     char b; //长度1 = 1 按1对齐;偏移量为4;存放位置区间[4]
     short c; //长度2 > 1 按1对齐;偏移量为5;存放位置区间[5,6]
     char d; //长度1 = 1 按1对齐;偏移量为6;存放位置区间[7]
     //整体存放在[0~7]位置区间中,共八个字节。
    };
    #pragma pack()

    第二步: 整体对齐

    整体对齐系数 = min((max(int,short,char), 1) = 1,所以不需要再进行整体对齐。整体大小就为8。

    图示如下:

    例二:二字节对齐

    第一步: 成员数据对齐

    #pragma pack(2)
    struct AA {
     int a; //长度4 > 2 按2对齐;偏移量为0;存放位置区间[0,3]
     char b; //长度1 < 2 按1对齐;偏移量为4;存放位置区间[4]
     short c; //长度2 = 2 按2对齐;偏移量要提升到2的倍数6;存放位置区间[6,7]
     char d; //长度1 < 2 按1对齐;偏移量为7;存放位置区间[8];共九个字节
    };
    #pragma pack()

    第二步: 整体对齐

    整体对齐系数 = min((max(int,short,char), 2) = 2,将9提升到2的倍数,则为10.所以最终结果为10个字节。

    图示如下:(X为补齐部分)

    例三:四字节对齐

    第一步: 成员数据对齐

    #pragma pack(4)
    struct AA {
     int a; //长度4 = 4 按4对齐;偏移量为0;存放位置区间[0,3]
     char b; //长度1 < 4 按1对齐;偏移量为4;存放位置区间[4]
     short c; //长度2 < 4 按2对齐;偏移量要提升到2的倍数6;存放位置区间[6,7]
     char d; //长度1 < 4 按1对齐;偏移量为7;存放位置区间[8];总大小为9
    };
    #pragma pack()

    第二步: 整体对齐

    整体对齐系数 = min((max(int,short,char), 4) = 4,将9提升到4的倍数,则为12.所以最终结果为12个字节。

    图示如下:(X为补齐部分)

    例三:八字节对齐

    第一步: 成员数据对齐

    #pragma pack(8)
    struct AA {
     int a; //长度4 < 8 按4对齐;偏移量为0;存放位置区间[0,3]
     char b; //长度1 < 8 按1对齐;偏移量为4;存放位置区间[4]
     short c; //长度2 < 8 按2对齐;偏移量要提升到2的倍数6;存放位置区间[6,7]
     char d; //长度1 < 8 按1对齐;偏移量为7;存放位置区间[8],总大小为9
    };
    #pragma pack()

    第二步: 整体对齐

    整体对齐系数 = min((max(int,short,char), 8) = 4,将9提升到4的倍数,则为12.所以最终结果为12个字节。图示如上。

    注:可以通过stddef.h库中的offsetof宏来查看对应结构体元素的偏移量。

    例四:结构体中包含结构体的运算

    整体计算过程如下

    struct EE
    {
     int a; //长度4 < 8 按4对齐;偏移量为0;存放位置区间[0,3]
     char b; //长度1 < 8 按1对齐;偏移量为4;存放位置区间[4]
     short c; //长度2 < 8 按2对齐;偏移量由5提升到6;存放位置区间[6,7]
     //结构体内部最大元素为int,由于偏移量为8刚好是4的整数倍,所以从8开始存放接下来的struct FF
     struct FF
     {
     int a1; //长度4 < 8 按4对齐;偏移量为8;存放位置区间[8,11]
     char b1; //长度1 < 8 按1对齐;偏移量为12;存放位置区间[12]
     short c1; //长度2 < 8 按2对齐;偏移量为13,提升到2的倍数14;存放位置区间[14,15]
     char d1; //长度1 < 8 按1对齐;偏移量为16;存放位置区间[16]
     };
     //整体对齐系数 = min((max(int,short,char), 8) = 4,将内存大小由17补齐到4的整数倍20
     char d;  //长度1 < 8 按1对齐;偏移量为21;存放位置区间[21]
     //整体对齐系数 = min((max(int,short,char), 8) = 4,将内存大小由21补齐到4的整数倍24
    };

    图示如下:

    例五:再来一个嵌套结构体的计算

    整体计算过程如下

    struct B {
     char e[2]; //长度1 < 8 按2对齐;偏移量为0;存放位置区间[0,1]
     short h; //长度2 < 8 按2对齐;偏移量为2;存放位置区间[2,3]
     //结构体内部最大元素为double,偏移量为4,提升到8,所以从8开始存放接下来的struct A
     struct A {
     int a; //长度4 < 8 按4对齐;偏移量为8;存放位置区间[8,11]
     double b; //长度8 = 8 按8对齐;偏移量为12,提升到16;存放位置区间16,23]
     float c; //长度4 < 8,按4对齐;偏移量为24,存放位置区间[24,27]
     };
     //整体对齐系数 = min((max(int,double,float), 8) = 8,将内存大小由28补齐到8的整数倍32
    };

    图示如下:

    小结:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对码农之家的支持。

    展开阅读

    资源下载

    相关资源

    • Nginx完全开发指南:使用C、C++和OpenResty

      Nginx完全开发指南:使用C、C++和OpenResty

      大小:244 MBNginx开发

      立即下载
    • Visual C++面向对象程序设计教程与实验(第二版)

      Visual C++面向对象程序设计教程与实验(第二版)

      《Visual C++面向对象程序设计教程与实验(第二版)学习指导与习题解答》是2010年清华大学出版社出版的图书,作者是温秀梅。 C++面向对象程序设计是一门实践性非常强的课程,为了更好地培养学生的程序设计能力和综合应用能力,并配合C++面向对象程序设计课程的教学需要,我们编写了本书。本书内容包括两部分。第1部分为学习指导与课后习题参考答案。按照教材的结构,对应教材的每一章节,分析了重点和难点,归纳了各章的知识点,对一些经典例

      大小:72.2 KBC++

      立即下载
    • C++入门经典(第5版)

      C++入门经典(第5版)

      本书通过短小精悍的程序详细阐述了基本的C++编程概念,每章都提供了示例程序清单,并辅以示例输出和代码分析,本书针对C++初学者编写的,不要求读者有C语言方面的背景知识

      大小:50.1 MBC++入门

      立即下载
    • Visual C++面向对象编程教程(第2版)

      Visual C++面向对象编程教程(第2版)

      本书系统地介绍了Visual C++面向对象编程的基本原理和方法。主要内容包括C++程序设计、Visual C++编程基础和Visual C++高级编程三个部分,按照VisualC++编程环境C++语言应用程序向导文档/视图结构对话框和控件MFC图形处理编程深入的顺序计教学内容。本书适合作为高等学校相关课程的教材或参考书,也可作为Visual C++应用开发人员的自学读本或培训教材。 目录 前言 第1章 Visual C++集成开发环境 1.1 Visual C++概述 1.1.1 Visual C++的

      大小:5.71 MBC++编程

      立即下载
    • C++标准模板库编程实战

      C++标准模板库编程实战

      《C++标准模板库编程实战》 介绍最新的C++14标准的API、库和扩展,以及如何将它们运用到C++14程序中。在书中,作者Ivor Horton 则阐述了什么是STL,以及如何将它们应用到程序中。我们将学习如何

      大小:130.9 MBC++编程

      立即下载

    学习笔记

    14小时50分钟前回答

    C++ 面试题翻译电话号码实例代码

    C++ 面试题翻译电话号码实例代码 例如: 输入:OneTwoThree 输出:123 输入:OneTwoDoubleTwo 输出:1222 输入:1Two2 输出:ERROR 输入:DoubleDoubleTwo 输出:ERROR 有空格,非法字符,两个Double相连,Double位于最后一个单词 都错误。 #include iostream #include string using namespace std; void process(string str) { //各字符串的下标即为其对应的阿拉伯数字 char *ch[]={"zero","one","two","three","four","five","six","seven","eight","nine","double"}; char *out[100];//存储结果集 int f=0; int i,j,k; string substr; int len=str.length(); int flag=0;//判断double出现 int flag2=0;//判断内循环有无break for(i=0;ilen;i++) { if(flag2) break; else if(str[i]97 || str[i]122)//非字母字符 { out[f++]="error"; break; } el……

    13小时17分钟前回答

    从string类的实现看C++类的四大函数(面试常见)

    朋友面试的一道面试题,分享给大家,面试官经常会问到的,实现string类的四大基本函数必掌握。 一个C++类一般至少有四大函数 ,即构造函数、拷贝构造函数、析构函数和赋值函数 ,一般系统都会默认。但是往往系统默认的并不是我们所期望的,为此我们就有必要自己创造他们。在创造之前必须了解他们的作用和意义,做到有的放矢才能写出有效的函数。 #include iostream class CString { friend std::ostream lt;(std::ostream ); public: // 无参数的构造函数 CString(); // 带参数的构造函数 CString(char *pStr); // 拷贝构造函数 CString(const CString // 析构函数 ~CString(); // 赋值运算符重载 CString sStr); private: char *m_pContent; }; inline CStrin……

    20小时56分钟前回答

    总结C/C++面试中可能会碰到的字符串指针题

    前言 不知道大家有没有这种体会,很多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗我们都觉得自己能,可是我们写出的strcpy很可能只能拿到10分中的2分。读者可从本文看到 strcpy函数从2分到10分解答的例子,看看自己属于什么样的层次。此外,还有一些面试题考查面试者敏捷的思维能力。 分析这些面试题,本身包含很强的趣味性;而作为一名研发人员,通过对这些面试题的深入剖析则可进一步增强自身的内功。 找错题 试题1: 以下是引用片段: void test1() { char str……

    网友NO.48716
    网友NO.48716

    const关键字有什么作用? 【解答】 (1)阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它初始化,因为以后就没机会改变它了; (2)对指针来说,可以指定指针本身为const,也可指定指针所指的数据为const,或二者同时指定为const; (3) 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值; (4) 对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量; (5) 对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为左值。

    网友NO.39996
    网友NO.39996

    1.c++的static关键字的作用(我从elf结构,链接过程来回答) 2.内联函数跟普通函数区别(从反汇编角度来回答) 3.select跟epoll的区别(epoll内核源码看过,从内核实现角度回答,所以回答的不错), small插曲:对于很多博客说epoll使用了共享内存,我说完全错误的,然后就扯到共享内存的内核实现(基于tmpfs,为何2个进程映射同一个文件会映射到同一片物理内存,根本机制是page cache) 4.STL中的迭代器失效问题 5.指针,引用区别(反汇编分析,其实汇编指令实现都一样,可以把引用看做编译器管理的指针,语法糖) 6.Linux相关cpu内存网络相关指令 7.父子进程fork时,打开的文件的偏移量是否是相同的(从内核角度看,父子进程fork会将file文件复制一份,所以肯定会的) 8.Linux虚拟地址空间(3G以上内核,因为进程创建时,内核的页表全部拷贝到进程第768页目录项以上的,3G以下则是代码段(.init节,.text节,.rodata节),数据段(.data节,.bss节),堆(brk指针),栈从3G往下) 9.【计算机网络】只问了time_wait的危害,三次握手,四次断开 10.c++多态的机制实现(虚函数表,看过深度探索c++对象模型的都会的) 11.vector跟list区别,还有map的底层实现(红黑树) 12.extern关键字