您的位置:首页 > 编程语言 > C语言/C++

考查C++/C程序员的基本编程技能面试题

2010-07-13 18:26 471 查看
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
if ( n == 0 ) if ( n != 0 )
以此类推。

请写出 BOOL flag 与“零值”比较的 if 语句:
答:if ( flag )
If ( !flag )

请写出 float x 与“零值”比较的 if 语句:
答:const float EPSINON = 0.01;
if ((x >= -EPSINON)&&(x <= EPSINON ) )

请写出 char *p 与“零值”比较的 if 语句:
答:if ( p == NULL )
If( p != NULL )

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

char str[] = “Hello” ;
char *p = str ;
int n = 10;
请计算
sizeof (str ) = 6

sizeof ( p ) = 4

sizeof ( n ) = 4
void Func ( char str[100])
{
请计算
sizeof( str ) = 4
}

void *p = malloc( 100 );
请计算
sizeof ( p ) = 4

三、简答题
1、const 有什么用途?(请至少说明两种)

2、new/delete和malloc/free有何异同?

3、简述进程和线程的区别?

4、多线程编程时,线程间同步的方法有哪些?

5、多线程编程,在一个线程中用Sleep()延时和用循环来延时有何区别?

四、有关内存的思考题

void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}

请问运行Test函数会有什么样的结果?
答:可能是乱码,程序崩溃
因为GetMemory不能传递动态内存

char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}

请问运行Test函数会有什么样的结果?
答:可能结果是乱码
因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新的内容不可知
Void GetMemory(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test函数会有什么样的结果?
答:输出hello但有内存泄漏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐