2017年8月1日
摘要: 分析下列程序,输出结果:不确定,未定义行为。 指针释放存储空间后没有置为NULL,变成野指针。 分析:野指针,不能通过简单的NULL进行判断,delete或free只是释放了指针所指向的内存区域,并没有干掉指针本身,所以指针指向的是“垃圾”指针,所以free或者delete之后要把指针置为NULL。 阅读全文
posted @ 2017-08-01 21:33 王小东大将军 阅读(173) 评论(0) 推荐(0)
摘要: 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]之前的字符 阅读全文
posted @ 2017-08-01 20:27 王小东大将军 阅读(573) 评论(0) 推荐(0)
摘要: 1. malloc,calloc,realloc,free属于C函数库,而new/delete则是C++函数库; 2. 多个-alloc的比较: alloc:唯一在栈上申请内存的,无需释放; malloc:在堆上申请内存,最常用; calloc:malloc+初始化为0; realloc:将原本申请 阅读全文
posted @ 2017-08-01 19:36 王小东大将军 阅读(331) 评论(0) 推荐(0)
摘要: 在一个有8个int数据的数组中,随机给出数组的数据,找出最大和第二大元素一定需要进行(9)次比较: 阅读全文
posted @ 2017-08-01 19:26 王小东大将军 阅读(252) 评论(0) 推荐(0)
摘要: 已知一稀疏矩阵的三组元表为:(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, 阅读全文
posted @ 2017-08-01 17:22 王小东大将军 阅读(159) 评论(0) 推荐(0)
摘要: extern声明多文件共享变量的方法总结一下: 1).在一个源文件中定义,在其他需要使用的源文件中用extern声明。(仅一处定义,多处extern) 2).在一个源文件中定义,在其对应的头文件中extern声明,在其他需要使用该共享变量的源文件中包含该头文件即可。(更加标准的做法) 在gcc编译器 阅读全文
posted @ 2017-08-01 16:53 王小东大将军 阅读(170) 评论(0) 推荐(0)
摘要: 分析以下程序,输出结果 2,5 分析: a 代表的是int * 每次步长为一个int; &a 代表的是 int[]* 每次步长为所指向的数组的大小。(&a是数组指针,其类型是int(*)[5]) 故 ptr 指向的是数组a最后一个元素的下一个元素 所以ptr-1指向的是数组a的最后一个元素 *(a+ 阅读全文
posted @ 2017-08-01 16:47 王小东大将军 阅读(333) 评论(0) 推荐(0)
摘要: 假设在一个32位的 little endian的机器上运行下面程序,输出结果:1 0 2 分析: 1 printf()是一个库函数,C,C++中函数的参数是从右往左入栈的; 2 栈的生长方向是从高往低的 3 小端模式是低位存储在低字节 4 %d格式输出的是4个字节大小,而long long为8个字节 阅读全文
posted @ 2017-08-01 16:24 王小东大将军 阅读(783) 评论(0) 推荐(0)