2014卫士通a卷笔试题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2014卫士通a卷笔试2014卫士通a卷笔试题

2014卫士通A卷笔试题(回忆版) 声明:题目是记忆的,大致意思相同,具体说法有差异,答案是搜索的,仅为参考。 一、简答题 1.c c++内存分配。 代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。 2.数组和链表的区别。 (1) 从逻辑结构角度来看   ?? a,?数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。   ? ?b,链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项) (2)从内存存储角度来看   ?? a,(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。   ?? b, 链表从堆中分配空间, 自由度大但申请管理比较麻烦. 数组静态分配内存,链表动态分配内存; 数组在内存中连续,链表不连续; 数组元素在栈区,链表元素在堆区; 数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n); 数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。 3.什么是野指针,如何避免? 野指针,也就是指向不可用内存区域的指针。通常对这种指针进行操作的话,将会使程序发生不可预知的错误。? ? ? “野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。野指针的成因主要有两种:? ? ? (1)、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。? ? ? (2)、指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。例:? char *p = (char *) malloc(100);? strcpy(p, “hello”);? free(p); // p 所指的内存被释放,但是p所指的地址仍然不变? if(p != NULL) // 没有起到防错作用? strcpy(p, “world”); // 出错? 4.指针常量和常量指针的区别? int?const?*p1?=?b;//const?在前,定义为常量指针,const修饰指向的对象,b可变,b指向的对象不可变??? int?*const?p2?=?c;//*在前,定义为指针常量?,const修饰指针c,c不可变,c指向的对象可变 5.全局变量是否可以定义在一个文件中,这个头文件被多个.c文件包含? 不可以,因为每个.c文件引用该.h文件时,会对.h中的函数重新定义一次。 如果全局变量被定义在可被多个.c文件包含的头文件中时,就会出现重复定义。 所以,应该是在某个.c文件里面定义,在.h中用extern进行声明 二、找错误 1.字符处理的问题,将abc变成cba。 具体代码忘记了,主要是strlen问题。 2. [cpp] view plaincopyprint? int?main()?? {?? ????int?a[100];?? ????int?**p;?? ????p?=?a;?? ????return?0;?? }?? int main() { int a[100]; int **p; p = a; return 0; } 找错 3.忘记了 ? 三、编程题 1.比较字符串大小,如果字符串1大于字符串2,返回1,相等返回0,小于则返回-1; [cpp] view plaincopyprint? int?strcmp(const?char*?str1,?const?char*?str2)?? {?? ????int?ret?=?0;?? ????while(!(ret=*(unsigned?char*)str1-*(unsigned?char*)str2)??*str1)?? ????{?? ????????str1++;?? ????????str2++?? ????}?? ?? ?? ????if?(ret??0)?? ????{?? ????????return?-1;?? ????}?? ????else?if?(ret??0

您可能关注的文档

文档评论(0)

skewguj + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档