林锐《高质量C++编程》试题简单笔记

一、基本数据类型与“零值”比较

1. 判断布尔值

if (flag)  or if (!flag)

2. 判断float类型与零值比较

const flag EPSINON = 0.000001;

if( (x>=-EPSION) && (x<=EPSINON)) 

3. 判断指针与“零值”比较

if (p == NULL )   or if (p != NULL)


二、简答题

1. 头文件中的ifndef/define/endif 干什么用?

答: 防止该头文件被重复使用

2. #include<filename.h> 和 #include "filename.h" 有什么区别

答: 对于#include<filename.h>, 编译器从标准库路径开始搜索 filename.h

        对于#include"filename.h", 编译器从源文件的工作路径开始搜索 filename.h, 如果搜索不到,再到标准库中搜索 filename.h。

3. const 有什么用途?

  1)可以定义常量

  2)const 可以修饰函数的参数,返回值等,提高了程序的健壮性

4. 在C++ 程序中,调用被C编译器编译后的函数,为什么要用 extern "C"?

答: 函数被C++编译后,在库中的名字与C语言不同,C++提供了C连接交换指定符号 extern "C" 来解决名字匹配问题。

三、编写 strcpy 函数
char* strcpy(char* strDest, const char* strSrc)
{  
     assert((strDest!=NULL) && (strSrc!= NULL) );
     char *address = strDest;
     while( (*strDest++ = *strSrc++) != ‘\0‘);
     return address;
}

简单小结: 林锐博士的这份试题,我只拿了20分,惭愧!确实像作者所说,应该好好修炼下“内功”。


林锐《高质量C++编程》试题简单笔记,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。