码迷,mamicode.com
首页 > 编程语言 > 详细

C++经典面试题(七)

时间:2015-06-28 17:37:41      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:c   c++   

最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来。

一是从来没有这个意识,二是没有认真的梳理下。

下面对这些题做出分析,哈!个人能力有限,其中难免有疏漏,欢迎大家补充咯!



61.main 函数执行以前,还会执行什么代码?
【参考答案】全局对象的构造函数会在main 函数之前执行。



62.There are two int variables: a and b, don’t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.
【标准答案】( ( a + b ) + abs( a - b ) ) / 2


(利用了数轴原理)



63.如何打印出当前源文件的文件名以及源文件的当前行号?
【标准答案】

cout << __FILE__ ;

cout<<__LINE__ ;

__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。(c也有)


(快忘完了。。。)



64.下面两种if语句判断方式。请问哪种写法更好?为什么?  

int n; if (n == 10) // 第一种判断方式 
if (10 == n) // 第二种判断方式

【参考答案】这是一个风格问题,第二种方式如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=。


在《C陷阱和缺陷》上面看到过,然后就一直保持这样的风格,嘿嘿!



65.写出运行结果:

{
// test1
char str[] = "world"; 
cout << sizeof(str) << ": ";
char *p = str; 
cout << sizeof(p) << ": ";
char i = 10; 
cout << sizeof(i) << ": ";
void *pp = malloc(10); 
cout << sizeof(p) << endl;
}


【标准答案】6:4:1:4

简单解释下

6,“world”在内存中这样存储,‘w’、‘o’、‘r’、‘l’、‘d’,还有它的结束符‘\0’,sizeof运算符计算str大小的时候包含‘\0’,所以是6,而使用strlen()函数计算出的str的大小就不包含‘\0’,得出的结果是5,注意区分。。


4,*p是一个char型指针,在32位机器上,指针的大小是4字节。如果是在64位机器上,结果是8


1,在32位机器上,char类型所占的大小是1字节


4,malloc(10)申请了10个指向void的地址,*pp存储的是首地址



66.在不用第三方参数的情况下,交换两个参数的值。
   【参考答案】

a = a + b; 	
b = a – b; 	
a = a – b; 


用位运算会更快一点

a=a^b;
b=a^b;
a=a^b;
实际上,原理和参考答案一样。。。



67.int i = 5, b = 7; cout << (i+++b) <<endl;

不用调试,请说出,以上代码在gcc编译过后的执行结果!

【标准答案】结果是12。



68.写一个能做左值的函数(方法有很多)。如:max(x, y) += 2874 + 55; drwline(x, y)++;
【参考答案】

int &max(int & x, int & y)
{
      return x > y? x : y;
}  
int x = 55, y = 77;
max(x, y) += 12 + 11; // 此时 y = 100;
cout << "x = "x << "; y = "<< y << endl; // 输出 x = 55; y = 100;


69.

技术分享


 【标准答案】   

 human disp ... ...

human over ......


因为没有声明为虚函数,所以无法调用子类的成员函数



70.下面的函数实现在一个固定的数上加上一个数,有什么错误,改正 : 

int add_n(int n)
{  
	static int i=100; 
	i+=n;   
	return i; 
} 


【标准答案】 因为static使得i的值会保留上次的值。以后的i会一直更新,使得第二次调用出现 出现错误, 去掉static就可了



未完。。。待续(*^_v_^*)





C++经典面试题(七)

标签:c   c++   

原文地址:http://blog.csdn.net/u011694809/article/details/46671603

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!