普天C++笔试题及答案
1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。
void DeleteNode(DuNode *p)
{
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
}
void InsertNode(DuNode *p, DuNode *s)//Node "s" is inserted after "p"
{
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
}
2.写一个函数,将其中的/t都转换成4个空格.
/* Name: Copyright: Author: 52coder
Date: 12-07-03 16:40
Description: 写一个函数,将其中的/t都转换成4个空格
*/
#include
using namespace std;
char* Convert_t(char *des,char *src)
{
char *temp;
des=new char[100];
temp=des;
while(*src!='/0')
{
if(*src=='/t')
{
src++;
*des++=' ';
*des++=' ';
*des++=' ';
*des++=' ';
continue;
}
*des++=*src++;
}
*des='/0';
des=temp;
return des;
}
int main()
{
char *t="asdf/tasd/tasasddas//tdfasdf",*d;
cout<
cout<
getchar();
}
3.Windows程序的入口是哪里?写出Windows消息机制的流程。
WINDOWS入口是WinMain函数
消息机制的流程:
系统中发生了某个事件
Windows把这个事件翻译为消息,然后把它放到消息队列中
应用程序从消息队列中接收到这个消息,把它存放在TMsg记录中
应用程序把消息传递给一个适当的窗口的窗口过程
窗口过程响应这个消息并进行处理
4.如何定义和实现一个类的成员函数为回调函数?
如果类的成员函数是一个callback函数, 必须宣告它为”static”,才能把C++ 编译器加诸于函数的一个隐藏参数this去掉。
5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。
不是的,C++里面有些动作不是引起的,比如,全局对象的实例化、全局变量的动态空间申请,等等.
下面是一个例子:
#include
using namespace std;
//全局变量的动态空间申请在程序运行之后,main运行之前完成。所以不是所有的.动作都是main引起的
char *des=new char[100];
int main()
{
char *des="abc";
cout<
getchar();
}
6.C++里面如何声明const void f(void)函数为C程序中的库函数?
extern “C” const void f(void);
这样声明之后,相当于告诉C, 函数const void f(void)是在C++语言的文件中声明或者实现的,c程序可以使用这个C++中的函数了,从而实现C++和c的混合编程。
7.下列哪两个是等同的
int b;
A const int *a = &b; //指针a所指内容是常量,等同于int const *a,
B const * int a = &b; //没有这种写法 ,只有int *const a,指针a是常量
C const int* const a = &b; //指针a是常量,所指的内容也是常量
D int const* const a = &b; //指针a是常量,所指的内容也是常量
所以C和D是一样的
8.内联函数在编译时是否做参数类型检查?
内联函数和普通函数都要做类型检查,宏不做类型检查。
版权声明:此文自动收集于网络,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。
本文地址:https://www.gunzhua.com/jiuye/bishi/29226.html