C++

来源:互联网 发布:淘宝天机分销平台 编辑:程序博客网 时间:2024/05/17 01:37

Windows程序的入口是哪里?写出Windows消息机制的流程

A、入口点是WinMain函数.

B

Windows消息机制的流程:

1.Windows中有一个系统消息队列,对于每一个正在执行的Windows应用程序,系统为其建立一个“消息队列”,即应用程序队列,用来存放该程序可能创建的各种窗口的消息。应用程序中含有一段称作“消息循环”的代码,用来从消息队列中检索这些消息并把它们分发到相应的窗口函数中。

2.Windows为当前执行的每个Windows程序维护一个「消息队列」。在发生输入事件之后,Windows将事件转换为一个「消息」并将消息放入程序的消息队列中。程序通过执行一块称之为「消息循环」的程序代码从消息队列中取出消息:

while(GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

TranslateMessage(&msg);将msg结构传给Windows,进行一些键盘转换。

DispatchMessage (&msg);又将msg结构回传给Windows。然后,Windows将该消息发送给适当的窗口消息处理程序,让它进行处理。

SendMessage()与PostMessage()之间的区别是什么?

它们两者是用于向应用程序发送消息的。PostMessagex()将消息直接加入到应用程序的消息队列中,不等程序返回就退出;而SendMessage()则刚好相反,应用程序处理完此消息后,它才返回。


C++中引用与指针的区别;
 答:1 引用实际上是所引用的对象或变量的别名,而指针是包含所指向对象或变量的地址的变量。
2 引用在定义时必须初始化,而指针在定义时不初始化。
3 不可以有努NULL的引用,而可以有指向NULL的指针。

4 引用在初始化后不可以改变引用关系,而指针可以随时指向其他对象(非const指针)

tenxun


1、c++对象模型,问多态性是怎么实现的?

连考两次。

2、什么是动态多态和静态多态?

       静态多态是用模版实现,动太多态是用虚函数实现的.

3、map set multimap multiset实现机制

红黑树

4、stl常用容器有哪些?

vector set list map

5、红黑树为什么有红点和黑点?

6、如果判断一个链表是否有环?

两指针,一个每次前进一步,一个每次前进两步,看两指针是否能相等?

  1. <span style="font-size:18px;">bool judge(list *head)  
  2. {  
  3.     if(head == NULL)  
  4.     {  
  5.         return false;//没有环  
  6.     }  
  7.   
  8.     list *pFast = head;  
  9.     list *pSlow = head;  
  10.   
  11.     while(pFast->next != NULL && pFast->next->next != NULL)  
  12.     {  
  13.         pFast = pFast->next->next;  
  14.         pSlow = pSlow->next;  
  15.   
  16.         if(pFast == pSlow)  
  17.         {  
  18.             return true;  
  19.         }  
  20.     }  
  21.   
  22.     return false;  
  23. }</span>  

7、什么是单件?

是单例模式.http://www.cnblogs.com/cxjchen/p/3148582.html

8、tcp和udp的区别?

TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。


9、阻塞和非阻塞区别?

阻塞是指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上;
非阻塞是指在执行此套接字的网络调用时,不管是否执行成功,都立即返回。

10、linux查看磁盘空间的命令?df

1、在linux中,检查磁盘空间的命令是 # df -h 
2、查看磁盘使用情况的结果是 # free -m 

11、给你一个vector<int>容器,如何删掉里面等于5的元素?

汗,竟然当时忘记了。只记得迭代器循环,删除的函数给忘记了。

12、红黑树基本特性?

红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树增加了如下的额外性质:

  • 性质1. 节点是红色或黑色。
  • 性质2. 根是黑色。
  • 性质3. 所有叶子都是黑色(叶子是NIL节点)。
  • 性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
  • 性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

给定一个单链表,只给出头指针h:http://blog.sina.com.cn/s/blog_725dd1010100tqwp.html

1、如何判断是否存在环?

2、如何知道环的长度?

3、如何找出环的连接点在哪里?

4、带环链表的长度是多少?

 

解法:

1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。

2、对于问题2,记录下问题1的碰撞点p,slow、fast从该点开始,再次碰撞所走过的操作数就是环的长度s。

3、问题3:有定理:碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始走,相遇的那个点就是连接点。(证明在后面附注)

4、问题3中已经求出连接点距离头指针的长度,加上问题2中求出的环的长度,二者之和就是带环单链表的长度


0 0