原创 C/C++面试中经常见到的几个问题

2009-10-13 10:01 3588 8 8 分类: 软件与OS

1sizeofstrlen()的区别


解答:sizeof是一个单目运算符,而strlen()是一个函数;在计算字符串的长度时,sizeof求出来的值是字符的总个数加1,而strlen()求出来的值就是字符的总个数。


2#include<filename.h>#includefilename.h”的区别


解答:对于#include<filename.h>,编译器从开发环境设置的路径开始搜索filename.h;对于#includefilename.h”,编译器从用户的工作路径开始搜索filename.h


3、头文件中的“ifndef/define/endif”是干什么用的


解答:防止头文件被重复引用


4、不同变量与“零值”比较的if语句


解答:


int    n;    n与“零值”比较的if语句为:


if(n == 0); if(n != 0);


bool  flag;  flag与“零值”比较的if语句:


if(flag); if(!flag)


            最好不要写成:


if(flag == TRUE); if(flag != TRUE); if(flag == 1);


float  x;    x与“零值”比较的if语句为:


                     //精度epsilon根据具体应用要求而定


                     const float epsilon = le-6;


                     if((x >= -epsilon) && (x<=epsilon))


注意:不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”的形式。


char  *p     p与“零值”比较的if语句为:


                     if(p == NULL); if(p != NULL)


                     下列写法错误:


                     if(p == 0); if(p != 0); if(p); if(!p);


5、中断函数可以有返回值吗


解答:不可以


6const#define的比较


解答:C语言中可以用const来定义常量,也可以用#define来定义常量。但是前者比后者具有更多的优点:


       (1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行静态类型安全检查;而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)


(2) 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条