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)缺点:不好扩展,如果加入新的条件,改动的代码过多,体积大
优点:性能高,循环没有判断