随笔分类 - 牛客网 易错收藏题目
针对自己易错、经典题的集锦
35 拷贝赋值函数、虚函数
摘要:分析一: 1.调用obj1的构造函数MyClass(int i =0)输出1;2.调用obj2的构造函数MyClass(int i = 0)输出2;3.调用obj3的复制构造函数MyClass(const MyClass&x)输出2;4.main函数返回时分别调用obj3、obj2、obj1的析构函
阅读全文
34 char类型转换为int类型
摘要:分析:char类型的范围是-128 +127,当a+=27,之后a的值超出可表示范围会变为-128. a为char型,-128~127,a=101,a+=27后溢出a=-128: a=127时不溢出 01111111(127补码) a+=1时溢出 10000000(-128补码) sum += a;
阅读全文
33 单/双精度有效数字、程序运行过程
摘要:1 C++中32位单精度浮点数能表示的十进制有效数字是7位。 分析:一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M。 单精度浮点数(float)总共用32位来表示浮点数,其中尾数用23位存储,加上小数点前有一位隐藏的1(IEEE754规约数表示法),2^(23+1) = 1677
阅读全文
32 C++常见错误集锦
摘要:1 下列程序中,K的值为:6 分析:enum中,首元素不赋值的话,默认为0;后一个元素不赋值的话比前一个元素大1. 2 程序运行正常。 分析:(http:)相当于一个label,类似于访问限定符private,public;程序可以正常运行。 双斜杠之后的www.csdn.NET被当做注释了,那么前
阅读全文
31 位域、空类的sizeof值
摘要:1 分析下列程序: 求sizeof(s)的结果为 16. 分析:看清楚结构体中是位操作,三个变量共占用一个int 类型的大小,int 类型占用4个字节,double占用8个字节,为实现内存对齐,int类型需要填充4个字节的长度。 x,y,z分别占用3,4,5位,int是4个字节32位,相当于xyz占
阅读全文
30 重载、隐藏、重写的区别
摘要:1.重载:重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。 class A{ public: void test(int i); void test(double i);//o
阅读全文
29 关于字节对齐运算
摘要:1. 分析字节对齐: 分析一:int 4,enum 4,union 14(因为 pack(2)),总22. 分析二:int i:4字节;union:13字节(共用内存),2字节对齐,13+1=14字节。enum:3字节。2字节对齐,3+1=4 分析三: int i,得到4个字节。union对齐方法:
阅读全文
红黑树与AVL
摘要:红黑树和avl树都属于自平衡二叉树; 两者查找、插入、删除的时间复杂度相同; 包含n个内部结点的红黑树的高度是o(logn); TreeMap是一个红黑树的实现,能保证插入的值保证排序 关于红黑树和AVL树,来自网络: 1 好处 及 用途 红黑树 并不追求“完全平衡”——它只要求部分地达到平衡要求,
阅读全文
死锁问题
摘要:哲学家就餐问题:当5个进程的时候如果都同时申请到了1台,就发生死锁了。如果是4个进程,那必然有一个能申请到2台。 虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件。 1 )互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由
阅读全文
TCP_NODELAY算法使用事项
摘要:当有一个TCP数据段不足MSS,比如要发送700Byte数据,MSS为1460Byte的情况。nagle算法会延迟这个数据段的发送,等待,直到有足够的数据填充成一个完整数据段。也许有人会问,这有什么影响呢?没有太大的影响,总体上来说,这种措施能节省不必要的资源消耗。但是要发送的总体数据很小时,这种措
阅读全文
基类与派生类的对象调用
摘要:下列代码之后的结果为( ) 1.b.f(); 基类对象直接调用基类的f()函数,输出a 2.p->f(); 派生类对象赋给基类的指针,由于f()在基类中是虚函数,根据基类指针指向的对象进行调用,因此调用派生类的int f()输出d 3.p->g();基类中g()不是虚函数,调用基类的g() 4.p_
阅读全文
printf以%d形式输出浮点数的问题
摘要:若运行时从键盘上输入9876543210l,则下面程序的输出结果是 int main(){ int a;float b,c; scanf("%2d%3f%4f",&a,&b,&c); printf("\na=%d,b=%d,c=%f\n",a,b,c); } A.a=98,b=765,c=4321.
阅读全文
22 大端序和小端序
摘要:分析下列程序,输出结果(AC) A 2015,810 B50810,201 C810,2015 D20150,810 分析: Little-Endian: 低地址存放低位、Big-Endian: 低地址存放高位 32bit宽的数0x12345678 在Little-endian模式CPU内存中的存放
阅读全文
21 野指针
摘要:分析下列程序,输出结果:不确定,未定义行为。 指针释放存储空间后没有置为NULL,变成野指针。 分析:野指针,不能通过简单的NULL进行判断,delete或free只是释放了指针所指向的内存区域,并没有干掉指针本身,所以指针指向的是“垃圾”指针,所以free或者delete之后要把指针置为NULL。
阅读全文
20 KMP匹配的Next值和Nextval值
摘要:i 0 1 2 3 4 5 6 7 8 s a b a b a a b a b next[i] -1 0 0 1 2 3 1 2 3 先计算前缀next[i]的值: next[i]的值主要是看s[i]之前的字符串中重复的子串长度。next[0] = -1,定值。 next[1]是看s[1]之前的字符
阅读全文
19 内存分配和释放的函数
摘要:1. malloc,calloc,realloc,free属于C函数库,而new/delete则是C++函数库; 2. 多个-alloc的比较: alloc:唯一在栈上申请内存的,无需释放; malloc:在堆上申请内存,最常用; calloc:malloc+初始化为0; realloc:将原本申请
阅读全文
18 比较数组找出最大两个数
摘要:在一个有8个int数据的数组中,随机给出数组的数据,找出最大和第二大元素一定需要进行(9)次比较:
阅读全文
17 稀疏矩阵转置
摘要:已知一稀疏矩阵的三组元表为:(1,2,3),(1,6,1),(3,1,5)(3,2,-1),(5,4,5)(5,1,-3),则其转置矩阵的三元组表中第3个三元组为() 分析: 原始的 1,2,3 1,6,1 3,1,5 3,2,-1 5,4,5 5,1,-3 转置之后相当于交换xy之后再存储 2,
阅读全文
16 extern用法、常量字符串的应用
摘要:extern声明多文件共享变量的方法总结一下: 1).在一个源文件中定义,在其他需要使用的源文件中用extern声明。(仅一处定义,多处extern) 2).在一个源文件中定义,在其对应的头文件中extern声明,在其他需要使用该共享变量的源文件中包含该头文件即可。(更加标准的做法) 在gcc编译器
阅读全文
浙公网安备 33010602011771号