charc;
cin>>c;
}
7Windows程序的入口是哪里?
写出Windows消息机制的流程.
函数WinMain()
Windows应用程序的消息处理机制如图1.2所示。
(1)操作系统接收到应用程序的窗口消息,将消息投递到该应用程序的消息队列中。
(2)应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息。
取出消息后,应用程序可以对消息进行一些预处理,例如,放弃对某些消息的响应,或者调用TranslateMessage产生新的消息。
(3)应用程序调用DispatchMessage,将消息回传给操作系统。
消息是由MSG结构体对象来表示的,其中就包含了接收消息的窗口的句柄。
因此,DispatchMessage函数总能进行正确的传递。
(4)系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理(即“系统给应用程序发送了消息”)。
8如何定义和实现一个类的成员函数为回调函数?
把函数声明为static
9C++里面是不是所有的动作都是main()引起的?
如果不是,请举例.
答:
在运行c++程序时,通常从main()函数开始执行。
因此如果没有main(),程序将不完整,编译器将指出未定义main()函数。
例外情况:
如,在windows编程中,可以编写一个动态连接库(dll)模块,这是其他windows程序可以使用的代码。
由于DLL模块不是独立的程序,因此不需要main().用于专用环境的程序--如机器人中的控制器芯片--可能不需要main().但常规的独立程序都需要main().
10C++里面如何声明constvoidf(void)函数为C程序中的库函数?
extern"C"voidf(void);
11下列哪两个是等同的C==D
intb;
Aconstint*a=&b;
Bconst*inta=&b;
Cconstint*consta=&b;
Dintconst*consta=&b;
12内联函数在编译时是否做参数类型检查
是
13三个float:
a,b,c问值
(a+b)+c==(b+a)+c1
(a+b)+c==(a+c)+b1
14把一个链表反向填空
voidreverse(test*head)
{test*pe=head;
test*ps=head->next;
while(ps)
{pe->next=ps->next;
ps->next=head;
head=ps;
ps=pe->next;}}
16某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)中已经最化了,换到另一个系统(300M的CPU,50M的SDRAM)中运行,还需要优化吗?
要。
程序在每时每刻都要优化,只要能找到可以优化的方法。
优化有多种目的,在200M的CPU中可能需要以速度为重点优化,在300M的CPU中可能要以代码长度为目的优化。
17.下面哪种排序法对12354最快C
aquicksort//快速排序
b.bublesort//冒泡排序
c.mergesort//归并排序
18.哪种结构,平均来讲,获取一个值最快B
a.binarytree//二叉树
b.hashtable//散列表,哈希表
c.stack//栈
19请问C++的类和C里面的struct有什么区别?
答:
c++的类的成员默认情况下是私有的,c的struct的成员默认情况下是公共的.
20请讲一讲析构函数和虚函数的用法和作用?
答:
析构函数的名字和类名相同,没有返回值,没有参数,不能随意调用也没有重载。
只是在类对象生命期结束时由系统自动调用。
虚函数用在继承中,当在派生类中需要重新定义基类的函数时需要在基类中将该函数声明为虚函数,作用为使程序支持动态联编。
21全局变量和局部变量有什么区别?
是怎么实现的?
操作系统和编译器是怎么知道的?
答:
一些变量整个程序中都是可见的,它们称为全局变量,一些变量在函数内部定义且只在函数中可知,则称为局部变量。
全局变量由编译器建立且存放在内存的全局数据区,局部变量存放在栈区.
22一些寄存器的题目,主要是寻址和内存管理等一些知识。
1、立即寻址
2、寄存器寻址
3、直接寻址
4、寄存器间接寻址
5、基址加变址寻址
6、寄存器相对寻址
7、相对基址加变址寻址
238086是多少位的系统?
在数据总线上是怎么实现的?
8086有16根数据线和20根地址线,因为可用20位地址.8086是16位处理器.
24多态。
overload和override的区别。
答:
多态:
接口的多种不同的实现方式即为多态
重载在相同范围(同一个类中),函数名字相同,参数不同,virtual关键字可有可无。
覆盖是指派生类函数覆盖基类函数,不同的范围,函数名字相同,参数相同,基类函数必须有virtual关键字。
<>
25.完成下列程序
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
#include
usingnamespacestd;
constintn=8;
main()
{
inti;
intj;
intk;
for(i=n;i>=1;i--)
{
for(j=0;j{
cout<<"*";
for(k=1;k{
cout<<".";
}
}
cout<}
system("pause")
}
26完成程序,实现对数组的降序排序
#include
usingnamespacestd;
voidsort(int*arr,intn);
intmain()
{
intarray[]={45,56,76,234,1,34,23,2,3};
sort(array,9);
for(inti=0;i<=8;i++)//曾经在这儿出界
cout<