您的位置:首页 > 编程语言 > C语言/C++

C++经典面试题(九)

2015-06-28 15:17 204 查看
最近看一些面试题,觉得如果自己被问到了,并不能很利落的回答出来。

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

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

81.代码

void func() 

{ static int val;       

… 

} 中,变量val的内存地址位于:

A. 已初始化数据段    B.未初始化数据段     

C.堆              D.栈 

【标准答案】A

82.一个栈的入栈序列是A,B,C,D,E,则栈的不可能的输出序列是( )

A、EDCBA;   B、DECBA;    

C、DCEAB;   D、ABCDE 

【标准答案】C

注意栈的先进后出特性。。。

83.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值。
int a = 4;
(A)a += (a++); (B) a += (++a) ;
(C)(a++) += a;(D) (++a) += (a++);
a = ?

【参考答案】C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,11

84.、请你谈谈你是如何使用return语句的。

【参考答案】

(1)return 语句不可返回指向“栈内存”的“指针”或者“引用” ,因为该内存在函数体结束时被自动销毁。(2)要搞清楚返回的究竟是“值”
、 “指针”还是“引用” 。 

(3)如果函数返回值是一个对象,要考虑 return 语句的效率。

85.①return String(s1 + s2); 

和②String temp(s1 + s2);

return temp; 一样吗?

【参考答案】 

①这是临时对象的语法,表示“创建一个临时对象并返回它” 。 

②将发生三件事。首先,temp 对象被创建,同时完成初始化;然后拷贝构造函数把 temp 拷贝到保存返回值的外部存储单元中;最后,temp
在函数结束时被销毁(调用析构函数) 。

然而“创建一个临时对象并返回它”的过程是不同的,编译器直接把临时对象创建并初始化在外部存储单元中,省去了拷贝和析构的化费,提高了效率。

86.下列程序的运行结果是

#include <iostream>
const char *str = "vermeer";
int main()
{
const char *pstr = str;
cout << "The address of pstr is: " << pstr << endl;
}


【标准答案】 The address of pstr is: vermeer 

87.下列程序输出结果是

inline void max_out( int val1, int val2 )
{
cout << ( val1 > val2 ) ? val1 : val2;
}
int main()
{
int ix = 10, jx = 20;
cout << "The larger of " << ix;
cout << ", " << jx << " is ";
max_out( ix, jx );
cout << endl;
}


【标准答案】The larger of 10, 20 is 0 ,为什么不是20呢?问题在于输出操作符的优先级高于条件操作符 所以输出 val1和 val2比较结果的 true/false  。              

好吧。。这个题想错了。。

88.
int max( int *ia, int sz );
int max( int *, int = 10 );
算函数重载?还是重复声明?  

【标准答案】如果在两个函数的参数表中只有缺省实参不同则第二个声明被视为第一个的重复声明 。 

89.请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数。 
【参考答案】



90.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回。



未完。。。待续(*^_v_^*)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c c++