有关指针的经典面试题集合

有关指针的经典面试题集合

ID:30501523

大小:48.81 KB

页数:37页

时间:2018-12-30

有关指针的经典面试题集合_第1页
有关指针的经典面试题集合_第2页
有关指针的经典面试题集合_第3页
有关指针的经典面试题集合_第4页
有关指针的经典面试题集合_第5页
资源描述:

《有关指针的经典面试题集合》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、有关指针的经典面试题       C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的解析一下指针的有关笔试,面试题.所有题目来源网络,分析是我写的...0.预备知识,最基础的指针其实最基础的指针也就应该如下面代码:inta;int*p=&a;也就是说,声明了一个int变量a,然后声明一个int的指针,*p指向a的地址,&也就是取地址符号,而*是指针中取内容的符号,仅仅在声明的时候

2、标记这个变量是指针.可能有点绕口,但是看代码来的容易的多...1.与const在一起的时候常常声明的时候会让人一头雾水,比如下面的声明,均是声明一个char*p的指针:char*constp;//指针不可改,也就说指针只能指向一个地址,不能更改为其他地址charconst*p;//所指内容不可改,也就是说*p是常量字符串charconst*constp;//内容和指针都不能改constchar*constp;//同上...内容和指针不能改额...别晕,别晕....其实方法很简单...你别真死记硬背...其实可以以*为分界

3、符,在*左边有const就说明内容不能改,在*右边就说明指针不能改,而左边的char和const顺序是不要紧的...呵呵...你也可以理解成const是修饰后面的,正常顺序应该这样:constchar*constp;是不是看起来简单了?2.忽悠人的陷阱,str[]和*str的区别先告诉你哦,下面的题目可是陷阱啊....说说程序结果...charstr1[]=“abc”;charstr2[]=“abc”;constcharstr3[]=“abc”;constcharstr4[]=“abc”;constchar*str5=“

4、abc”;constchar*str6=“abc”;char*str7=“abc”;char*str8=“abc”;cout<<(str1==str2)<<endl;cout<<(str3==str4)<<endl;cout<<(str5==str6)<<endl;cout<<(str7==str8)<<endl;怎么样?都输出true?那显然你中标了...而且cout输出bool值的时候,就算全是真也应该都输出1啊...4个

5、1?那也不对...答案是0011,不信你试试...为什么呢?其实都说了这题是个大陷阱,因为这题根本不是比较字符串内容!而是比较字符串的地址.哦...恍然大悟...那为什么前两个是假呢?因为这可是说是一个深拷贝/浅拷贝的问题.当字符串是数组形式声明并初始化,编译器认为是新数组,分配新空间,但不是深拷贝,因为根本就不算拷贝.而如果是相同的字符串,用指针声明,那就是比较如果有一样的字符串,就直接把新指针指过去,这是正宗的浅拷贝.哇哈...你就中计了...1.str[]用sizeof判断会出错么?应该说我们常常用指针有很多时候是

6、解决字符串的问题,一般我们用strlen,这当然没有问题,但是要你编一个呢?看看下面这个MyStrlen有问题么?intMyStrlen(charstr[]){return(int)(sizeof(str)-1);}呵呵...咱们上当过一次..这个当然也是不对的...不错...这个函数是错的...为什么呢?首先,可以告诉你,无论何时,返回的总是3...额...是不是很奇怪,为什么不是数组长度呢?str不是char数组指针么?不错...确实是数组的指针,但是,当用函数传递的数组指针的时候就自动退化为指针了,而指针的长度是4

7、,你减去1了自然就是3了.但是如果按照下面代码就可以得到正常的值.charstr[]="helloworld";intlen=sizeof(str)-1;//记得减1哦,最后有''结尾cout<<len;这样输出的是正常值,也就是你所希望的11;2.注意数组指针和指针继续上面的话题,刚刚提到了数组指针和指针,现在看看下面这端程序代码:inta[5]={1,2,3,4,5};int*ptr=(int*)(&a+1);cout<<*(a+1)<&l

8、t;*(ptr-1);呵呵...BaihowFF总是给陷阱..肯定不是想当然的说就是21...确实...答案是25...额...奇怪吧..为什么呢?首先,a是一个数组,所以编译器解释&a就是a的全部长度,就是说(&a+1)也就是说移动了一个数组,指向了并不存在的a[5],所以ptr-1才会指向a数组的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。