c c 面试题大汇总

c c 面试题大汇总

ID:12996297

大小:30.45 KB

页数:29页

时间:2018-07-20

c c 面试题大汇总_第1页
c c 面试题大汇总_第2页
c c 面试题大汇总_第3页
c c 面试题大汇总_第4页
c c 面试题大汇总_第5页
资源描述:

《c c 面试题大汇总》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、cc面试题大汇总1.求下面函数的返回值(微软) intfunc(x) { intcountx=0; while(x) { countx++; x=x(x-1); } returncountx; } 假定x=9999。答案:8   思路:将x转化为2进制,看含有的1的个数。 每取一次会消去1个1;   2.什么是“引用”?申明和使用“引用”要注意哪些问题?   1引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果养完全相同。   2申明一蚤个引用的时候,切记要对旦其进行初始化。引用声明拔完毕后,相当于目标变量军名有两个名称,即该目标煞原名称和引用名,不能再司把该引

2、用名作为其他变量绷名的别名。   3声明一吉个引用,不是新定义了一凄个变量,它只表示该引用鸭名是目标变量名的一个别庆名,它本身不是一种数据年类型,因此引用本身不占挝存储单元,系统也不给引勇用分配存储单元。 4不能涕建立数组的引用。 3.将婶“引用”作为函数参数有征哪些特点?   (1)传崩递引用给函数与传递指针耘的效果是一样的。这时,擞被调函数的形参就成为原续来主调函数中的实参变量床或对象的一个别名来使用预,所以在被调函数中对形才参变量的操作就是对其相写应的目标对象(在主调函闪数中)的操作。   (2辫)使用引用传递函数的参攒数,在内存中并没有产生淆实参的副本,它是直接对障实参操作;而使用

3、一般变紊量传递函数的参数,当发邯生函数调用时,需要给形动参分配存储单元,形参变酚量是实参变量的副本;如娥果传递的是对象,还将调毯用拷贝构造函数。因此,趾当参数传递的数据较大时眩,用引用比用一般变量传饮递参数的效率和所占空间泻都好。   (3)使用指助针作为函数的参数虽然也行能达到与使用引用的效果项,但是,在被调函数中同揩样要给形参分配存储单元汞,且需要重复使用"*指救针变量名"的形式进行运碌算,这很容易产生错误且讣程序的阅读性较差;另一溯方面,在主调函数的调用葫点处,必须用变量的地址侦作为实参。而引用更容易岳使用,更清晰。 4.在什萤么时候需要使用“常引用富”?   如果既要利用引殊用提高

4、程序的效率,又要锤保护传递给函数的数据不泽在函数中被改变,就应使汾用常引用。   常引用声晃明方式:const类型炳标识符引用名=目标变量贴名; 例1 inta; co甩nstintra=a;别 ra=1;//错误 a=淬1;//正确 例2 str廓ingfoo(); vo蕴idbar(strin俘gs) //下面的表达式赢都是非法的 bar(fo习o()); bar("h怨elloworld")寒;   原因在于foo(巍)和"hellowor论ld"串都是产生一个临七时对象,而在C++中,钎这些临时对象都是con扎st类型的。因此上面的有表达式就是试图将一个c同onst类型的对象转换四

5、为非const类型,这像是非法的。   引用型参揩数应该在能被定义为co悯nst的情况下,尽量定屎义为const。   5胰.将“引用”作为函数返历回值类型的格式、好处和灵需要遵守的规则? 格式:液 类型标识符函数名(形参皖列表及类型说明) { //溺函数体 }   好处:在内杜存中不产生被返回值的副哟本;(注意:正是因为这抽点原因,所以返回一个局界部变量的引用是不可取的妊。因为随着该局部变量生曳存期的结束,相应的引用牌也会失效,产生runt骋imeerror! 注意掩:   (1)不能返回局裕部变量的引用。主要原因绕是局部变量会在函数返回行后被销毁,因此被返回的镭引用就成为了"无所指"场

6、的引用,程序会进入未知樟状态。   (2)不能返发回函数内部new分配的蚤内存的引用。可对于这种钳情况,又面临其它尴尬局揣面。例如,被函数返回的漠引用只是作为一个临时变媚量出现,而没有被赋予一丹个实际的变量,那么这个菜引用所指向的空间(由n冤ew分配)就无法释放,墨造成memorylea命k。   (3)可以返回裔类成员的引用,但最好是谊const。   (4)无流操作符重载返回值申明取为“引用”的作用:   涵流操作符>,这两个操作艺符常常希望被连续使用,权例如:cout#inc咋lude intput(擎intn); intva斋ls; interror础=-1; voidmai针n(

7、) {   put(0荧)=10;//以put扯(0)函数值作为左值,曲等价于vals=10;碳   put(9)=20翅;//以put(9)函扎数值作为左值,等价于v振als=20; cout陵cout} intput粘(intn) { if(n少>=0n{ return薪vals; } else {诛 coutreturne殖rror; } }   (5遥)在另外的一些操作符中胁,却千万不能返回引用:形+-*/四则运

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

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

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