高质量c++编程指南-第11章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
如下是错误的写法,不得分。
if (x 0。0)
if (x != 0。0)
请写出 char *p 与〃零值〃比较的 if 语句。(3分)
标准答案:
if (p NULL)
if (p != NULL)
如下写法均属不良风格,不得分。
if (p 0)
if (p != 0)
if (p)
if (!) 二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)
char str'' = 〃Hello〃 ;
char *p = str ;
int n = 10;
请计算
sizeof (str ) = 6 (2分)
sizeof ( p ) = 4 (2分)
sizeof ( n ) = 4 (2分)
void Func ( char str'100')
{
请计算
sizeof( str ) = 4 (2分)
}
void *p = malloc( 100 );
请计算
sizeof ( p ) = 4 (2分)
三、简答题(25分)
1、头文件中的 ifndef/define/endif 干什么用?(5分)
答:防止该头文件被重复引用。
2、#include 和 #include 〃filename。h〃 有什么区别?(5分)
答:对于#include ,编译器从标准库路径开始搜索 filename。h
对于#include 〃filename。h〃 ,编译器从用户的工作路径开始搜索 filename。h
3、const 有什么用途?(请至少说明两种)(5分)
答:(1)可以定义 const 常量
(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
4、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern 〃C〃? (5分)
答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x; int y);
该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。
C++提供了C连接交换指定符号extern〃C〃来解决名字匹配问题。
5、请简述以下两个for循环的优缺点(5分)
for (i=0; i