1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C笔试1

2010 C、C++笔试题大全,被问的概率几乎 100%。 strcpy 函数: char *strcpy(char * strDest,const char* strSrc)//注意第二个参数用const 修饰 { assert((strDest! NULL)(strSrc! NULL)); char*address strDest; // temporary pointersaveaddressofthestrDest. while((*strDest + *strSrc++)! \0); //copythesrcstringtothedeststring return strDest; //returndest str } memcpy 函数: void* memcpy(void *pvTo,void * pvForm,size_t size) { assert(pvTo! NULLpvFrom! NULL); assert(pvTo pvFrom+size ||pvFrom pvTo+size); //防止内存重叠 byte *pbTo (byte *)pvTo; byte *pbFrom (byte *)pvFrom; while(size--0) //copy count bytes of src to dest *pbTo++ *pbFrom++; return pvTo; } strlen完美版: int strlen(const char * str) { assert(str! NULL); int len 0; while((*str++)! \0) //*str point to the first parameter‘s address, str pointer move to the string trail len ++; return len; } strcmp函数完美版: int strcmp(const char * str1,const char *str2) { while(1) { if(*str1*str2) return 1; else if(*str1*str2) return -1; else return 0; str1++; str2++; } } 很少有真正精通了C语言编程的学员,一般都有或多或少概念不是完全清楚的问题, 特别是一些需要丰富的实战经验才能体会和明白的问题,如字符串,指针,类型转换,定义 指向函数的指针类型,这也是导致学习C 困难的一个原因。下面有几个简单测试将能发现 你对C语言的掌握情况。 1)intx 35; char str[10]; //问:strlen(str)和sizeof(str)的值分别是多少? 答:strlen(str) 值不确定,strlen 根据\0确定字符串是否结束。 sizeof(str) 10 sizeof 一个数组为数组长度 strcpy(str,/*共 13个字母*/); //问:此时x 和strlen(str)的值分别是多少? 答:x 为35 strcpy(char*dest,const char*src) 根据src来复制dest,依照src 的\0决定复制的长度,而dest 必须要提供足够的长度,这 里会引起溢出,strlen 返回13,但是数组外部的数据已经被破坏 strlen 的值为13,在VC++环境下,x 的值是要改变的(其他编译器下没试,).虽然表面上看来, 在程序中并没有修改x 的值,但是实际运行的结果是上面的x 的值发生了修改,这是因为 strcpy 以后,把多余的数据拷贝进了str 的邻居(int 类型的x)中,所以x 的数据也就变了.这是一 个曾让我刻骨铭心的问题,在我刚出道时遇到这个问题,虽然在朋友的帮助下解决了这个问题, 但一直不明白x 的值为何变了,只有最后走上培训教师的岗位,才开始梳理自己曾经的困惑, 才开始总结以前的经验供学员们借鉴.我觉得这个题目的价值非常之大,它能引起学员对字符 串拷贝越界问题的足够重视,并且通过这个问题更能明白字符串的处理是怎么回时,更能明白 字符串与字符数组的关系:字符串就是一个字符数组,只是把这个字符数组用在处理串的函数 中时,这些函数不考虑数组的长度,只是记住数组的首地址,从首地址开始处

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档