C++必知必会复习(七)

1、请用写BOOL、float,指针变量与“零值”比较的if语句。

提示:这里的“零值”可以为0,0.0,False或者“空指针”。例int变量n与“零值”比较的if语句为:

if(n == 0)

if(n != 0)

以此类推:

(1)请写出BOOl,flag与“零值”比较的if语句。

if(flag)

if(!flag)

(2)请写出float与“零值”比较的if语句。

const float EPSINON = 0.00001;

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

不可将浮点变量用“==”或“!=”与数字

应设法转化为“>=”或“<=”;

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

if(p == NULL)

if(p != NULL)


2、以下为windows下的32位C++程序,请计算sizeof的值

char str[] = "Hello";

char *p = str;

int n = 10;

请计算:

Sizeof(str)=          //‘H’,‘e’,‘l’,‘l’,‘o’,‘\0’为6

Sizeof(p)=           //4

Sizeof(n)=           //4

void *p = malloc(100);

计算

Sizeof(*p) =              //4


3、头文件中的ifndef/define/endif有什么作用?

防止头文件被重复使用


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

前者用来包括开发环境提供的库头文件,后者用来包含自己编写的头文件,或者外部头文件。

编译器看到“ ”首先是从本地目录开始寻找,找不到了然后去寻找系统路径; <>永远也不会搜索本地目录。


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

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


6、switch()中不允许的数据类型是?

实型


7、有关内存的思考题:

void Getmemory(char *p)

{

     p = (char *)malloc(100);

}

void Test(void)

{

    char *str = NULL;

    Getmemory(str);

    strcpy(str , " hello world");

    printf(str);

}

请问运行Test函数会有什么样的结果?

hello world


8、比较以下两种for循环的优缺点?

(1)

for(i = 0; i < n; i ++){

if(condition)

    DoSomething();

else

    DoSomething();

}

(2)

if(condition){

for(i = 0; i < n; i ++)

    DoSomething();

}else{

for(i = 0; i < n; i ++)

    DoSomething();

}

(1)缺点:性能低下,每次循环均需要一次判断

         优点:可读性高,可扩展性高

(2)缺点:不好扩展,如果加入新的条件,改动的代码过多,体积大

         优点:性能高,循环没有判断


猜你喜欢

转载自blog.csdn.net/u014252478/article/details/80249186