实习中遇到的一些困惑问题
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;
}
防止该头文件被重复引用如果头文件被重复引用了,根据文件的内容有不同的后果,比如重复定义。
例:可以用来预防多重包含同一头文件
#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;
}
相关文章推荐
- 5 月份实习遇到的一些问题
- 实习电话面试遇到到一些问题(四)
- 总结一下自己Java实习后遇到的一些问题。
- java 实习遇到的问题和一些小经验(第一个月)
- 2018春,在实习面试过程中遇到的一些问题
- 实习面试会遇到的一些问题
- 实习电话面试遇到到一些问题
- 实习电话面试遇到到一些问题(二)
- Sharepoint 2007上应用workflow遇到的一些问题
- 图象保存中遇到的问题,很困惑!
- 建站中所遇到的一些问题[原创]
- 安装VS2003和Netbeas5.5时遇到的一些问题
- SQLSERVER2000使用中遇到的一些小问题,不断更新中。。。
- 一些编程中困惑的小问题
- JBPM中运行build.deploy.xml及build.xml遇到的一些问题
- VC 使用过程中所遇到的一些问题,汇总在这里,希望对后来者有些许帮助
- log4net使用中遇到的一些问题
- tomcat,jboss使用中遇到的一些问题的解决
- Solaris 10 安装及SVC管理及X及Vmware及其它可能遇到的一些问题
- 初学软件开发可能会遇到了一些问题...