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

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值