- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c、c++笔试题,面试题
笔试,面试,职业规划,考研
2010 C、C++笔试题大全,被问的概率几乎 100%。 、 笔试题大全, 笔试题大全 。很少有真正精通了 C 语言编程的学员,一般都有或多或少概念不是完全清楚的问题, 特别是一些需要丰富的实战经验才能体会和明白的问题,如字符串,指针,类型转换,定义 指向函数的指针类型,这也是导致学习 C 困难的一个原因。下面有几个简单测试将能发现 你对 C 语言的掌握情况。
1)int x=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 时 结束处理,
3)char str[10]; str=; // also can use :memcpy(str, ) //编译能通过吗? 答:数组不能赋值,只能初始化。char str[10] = ; 而且初始化时编译器会检查数组的长度与初始化串的长度是否匹配
4)char *pstr; strcpy(pstr,); //需要初始化并分配空间 //上句编译能通过吗?运行时有问题吗?
答:可以通过编译,但是 pstr 指向了常量区,运行时最好只做读操作,写操作不保险。 编译可以通过,但是 pstr 没有进行有效的初始化,它指向了一个不确定的内存区,运行时会 出现内存不可写错误! const char *p1; char * const p2; //const 指针必须初始化 //上面两句有什么区别吗?
答:const char* 和 char const* 一样,都是表示指向常量的字符指针。 char * const 表示指向字符的常量指针 p1=(const char *)str; //如果是 p1=str;编译能够通过吗?明白为什么要类型转换?类型转换的本质是什么?
答:可以通过编译。关于常量与非常量指针的关系是这样的: const 指针可以指向 const 或者非 const 区域,不会造成什么问题。 非 const 指针不能指向 const 区域,会引起错误。(呵呵,这个问题,很经典) strcpy(p1,abc);//编译能够通过吗?
答: 不能通过,strcpy( char*, const char*); char* 不能指向 const char* 注意:非 const 指针不能指向 const 区域,会引起错误。 printf(%d,str);//有问题吗?
答:没有问题,输出的是 str 的地址信息 Char *pstr; pstr=3000;//编译能过吗?如果不行,该如何修改以保证编译通过呢?
答:不能通过,char* pstr 表示 pstr 是个字符指针,不能指向 3000 的整形变量。 修改的话,可以这样:pstr = (char*)3000,把 pstr 指向 3000 这个地址; long y=(long)pstr;//可以这样做吗?
答:可以,y 的值为 pstr 所指的地址。不过如果是纯粹要地址的话,最好是用 unsigned long。 int *p=str; *p=0 pr
您可能关注的文档
最近下载
- 基于PLC的地铁自动售票机电气控制部分的设计.doc VIP
- Unit 4 Helping in the community 词汇句型专项训练(含答案解析)人教PEP版2025英语四年级上册.pdf
- 2025年成人高等教育学士学位英语水平考试(成人英语三级)历年参考题库含答案详解.docx VIP
- 青春期女生生理知识.pptx VIP
- Unit 4 Helping in the community 补全对话与短文专项训练(含答案解析)人教PEP版2025英语四年级上册.docx
- 碎纸屑压块机设计.docx VIP
- 一台触摸屏控制多台plc.pdf VIP
- 中医医案——颈椎病(三).docx VIP
- 《空乘旅游英语视听说》课件——In-flight Meals 飞机餐.pdf VIP
- 婴幼儿反复喘息诊治、管理、预防临床实践循证指南(2025).pptx VIP
原创力文档


文档评论(0)