作者:寒小阳
时间:2013年9月。
出处:http://blog.youkuaiyun.com/han_xiaoyang/article/details/10894159。
声明:版权所有,转载请注明出处,谢谢。
C/C++测试题
前几个部分从编程风格、函数设计、内存管理和类的一些相关知识和注意点出发,对C/C++基础知识和笔试面试易考察的点进行了归纳总结。下面这是针对前述知识出的一份测试题,也是一些易考点,大家认真阅读了之前的部分,这些题大家都很容易就能做出来。
一、请填写BOOL,float,指针变量 与“零值”比较的if语句。
提示:这里“零值”可以是0,0.0,FALSE或者“空指针”。例如int变量n与“零值”
比较的if语句为:
if(n==0)
if(n!=0)
以此类推。
请写出BOOLflag与“零值”比较的if语句:
请写出floatx与“零值”比较的if语句:
请写出char*p与“零值”比较的if语句:
二、以下为Windowsxp下的32位C++程序,请计算sizeof的值
charstr[]=“Hello”;
char*p=str;
intn=10;
请计算
sizeof(str)=
sizeof(p)=
sizeof(n)=
voidFunc(charstr[100])
{
}
请计算
sizeof( str)=
void*p=malloc(100);
请计算
sizeof(p)=
三、简答
1、头文件中的ifndef/define/endif干什么用?
2、#include<filename.h>和#include“filename.h”有什么区别?
3、const有什么用途?(请至少说明两种)
4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”声明?
5、请简述以下两个for循环的优点和缺点
//第一个
for(i=0;i<N;i++)
{
if(condition)
DoSomething();
else
DoOtherthing();
}
//第二个
if(condition)
{
for(i=0;i<N;i++)
DoSomething();
}
else
{
for(i=0;i<N;i++)
DoOtherthing();
}
四、看程序写结果题
请问运行以下Test函数会有什么样的结果?
//第一个
voidGetMemory(char*p)
{
p=(char*)malloc(100);
}
voidTest(void)
{
char*str=NULL;
GetMemory(str);
strcpy(str,"helloworld");
printf(str);
}
//第二个
char*GetMemory(void)
{
charp[]="helloworld";
returnp;
}
voidTest(void)
{
char*str=NULL;
str=GetMemory();
printf(str);
}
//第三个
VoidGetMemory2(char**p,intnum)
{
*p=(char*)malloc(num);
}
voidTest(void)
{
char*str=NULL;
GetMemory(&str,100);
strcpy(str,"hello");
printf(str);
}
//第四个
voidTest(void)
{
char*str=(char*)malloc(100);
strcpy(str,“hello”);
free(str);
if(str!=NULL)
{
strcpy(str,“world”);
printf(str);
}
}
五、C函数编写题
已知strcpy函数的原型是
char*strcpy(char*strDest,constchar*strSrc);
其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数strcpy
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char*类型的返回值?
六、类函数编写题
已知类String的原型为:
classString
{
public:
String(constchar*str=NULL);//普通构造函数
String(constString&other);//拷贝构造函数
~String(void);//析构函数
String&operate=(constString&other);//赋值函数
private:
char*m_data;//用于保存字符串
};
请编写String的上述4个函数。