您的位置:首页 > 其它

实习中遇到的一些困惑问题

2014-08-05 16:09 204 查看
1、头文件中的 ifndef/define/endif 干什么用?

防止该头文件被重复引用如果头文件被重复引用了,根据文件的内容有不同的后果,比如重复定义。

例:可以用来预防多重包含同一头文件

#ifndef SALESITEM_H

#define SALESITEM_H

#endif

#ifndef指示检测预SALESITEM_H处理器变量是否未定义,如果未定义,那么后面所有的指示全被处理直到出现#endif。

2、#include <filename.h> 和 #include “filename.h” 有什么区别?

#include <filename.h> 引用标准库的头文件(从标准库目录开始搜索);直接从库中查找。

#include “filename.h” 引用非标准库的头文件(从用户工作目录开始搜索)先在当前位置查找,如果没有找到在从库中查找。

3、const 有什么用途?(请至少说明两种)

(1)可以定义 const 常量;

(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护, 可以预防意外的变动,能提高程序的健壮性。

4、在C++ 程序中调用被C编译器编译后的函数,为什么要加 extern“C”声明?

作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。

5、在用到malloc()函数时要加那个头文件?

#include<stdlib.h> 和 #include<malloc.h>。

6、请写出 BOOL flag 与“零值”比较的 if 语句:

请写出 float x 与“零值”比较的 if 语句:

请写出 char *p 与“零值”比较的 if 语句:

bool a;

if(a) { // }

if(!a){ // }

======

int a;

if(a==0)

{

//

}

if(a!=0)

=====

float a;

const float eps=0.000001;

if((a>=-eps) && (a<=eps) )

{

//

}

if ( var >= eps|| var <= -eps)

{

//

}

=======

int *a;

if(a==NULL)

{

//

}

7、已知strcpy函数的原型是

char *strcpy(char *strDest, const char *strSrc);

其中strDest是目的字符串,strSrc是源字符串。

(1)不调用C++/C的字符串库函数,请编写函数 strcpy

(2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?

//为了实现链式操作,将目的地址返回,加3分!

//将源字符串加const,表明其为输入参数,加2分

char * strcpy( char *strDest, const char *strSrc )

{

//对源地址和目的地址加非0断言,加3分

assert( (strDest != NULL) && (strSrc != NULL) );//如果它的条件返回错误,则终止程序执行

while( (*strDest++ = * strSrc++) != ‘\0’ );

char *address = strDest;

return address;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: