C++面试题答案总结

来源:互联网 发布:淘宝卖家在哪里登陆 编辑:程序博客网 时间:2024/05/16 16:59

1.分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)

    解答:

    BOOL型变量:if(!var)

    int型变量: if(var==0)

    float型变量:

    const float EPSINON = 0.00001;

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

    指针变量:  if(var==NULL)

2.以下为Windows NT下的32位C++程序,请计算sizeof的值.

char str[]= “Hello” ;
char *p= str ;
int n= 10;
请计算
sizeof (str )= 6;//计算str数组大小,注意str是数组而不是指针,所以是6,包括’\0‘

sizeof ( p )=4;//p为指针类型,在32位环境下,自然是4个字节了

sizeof ( n ) =4;//n为int类型数据,在32位环境下,也是4个字节

void Func ( charstr[100])
{
请计算
sizeof( str )= 4;//不要被charstr[100]给诱惑了,实际charstr作为形参是一个指针,4个字节
}

void *p = malloc( 100);
请计算
sizeof ( p )//p还是一个指针类型,依然是4个字节
= 4;

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

fndef/define/endif  的含义:如果未定义 / 那么定义 / 完成假设

一般是用来防止头文件被重复包含,提高编译效率的。

4.#i nclude 和 #i nclude “filename.h” 有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。

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

(1)可以定义 const 常量

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

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

函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。

0 0
原创粉丝点击