单选题:
1、 已知中序遍历的序列为abcdef,高度最小的不可能的二叉树的前序遍历是(C)
A、dbacfe B、cbaedf C、cabefd D、dbacef
- 1
2、下列运算符中,在C++语言中不能重载的是(D)
A、* B、delete C、>= D、::
说明:C++中不能重载的运算符:“?:”、“.”、“::”、“sizeof”和”.*”。
- 1
- 2
3、下面哪个函数不能创建Windows内核对象(D)
A、CreateSemaphore B、CreateFile
C、CreateEvent D、CreateDc
解析:
说明:在Windows操作系统中我们常常接触的有三种对象类型:
• Windows内核对象 (事件对象,文件对象,进程对象,线程对象,I/O完成端口对象,互斥量对象,等等):由执行体(Excutive)对象管理器(Object Manager)管理,内核对象结构体保存在系统内存空间(0x80000000-0xFFFFFFFF),句柄值与进程相关。
• Windows GDI对象 (画笔对象,画刷对象等):由Windows子系统管理,句柄值在系统,会话范围 (system-wide / session-wide) 有效。
• Windows USER对象 (窗口对象,菜单对象等) :由Windows子系统管理,句柄值在系统,会话范围 (system-wide / session-wide) 有效。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4、
#include <iostream>
#include <>
using namespace std;
uint64_t get_square(uint32_t a)
{
cout<<a<<" "<<(uint64_t)a<<endl;
return (uint64_t)a*(uint64_t)a;
}
int main()
{
uint64_t ret=0;
ret=get_square(1<<20);
printf("ret=0x%llx\n",ret); //0x10000000000
}
%d 有符号32位整数
%u 无符号32位整数
%lld 有符号64位整数
%llx有符号64位16进制整数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
5、下列有关动态链接库说法错误的是(C)
A、动态链接库可以静态加载,也可以调用LoadLibrary函数动态加载;
B、使用GetModuleFileName,并传入该动态链接库的句柄,可以得到动态链接库文件的全路径;
C、动态链接库的入口点函数是DllMain,它只会在首次加载该动态链接库时执行一次;
D、同一个动态链接库在内存中只会存在一份;
解析:
1、The DllMain function is an optional method of entry into a dynamic-link library (DLL)。(简要翻译:对于动态链接库,DllMain是一个可选的入口函数。)这句话很重要,很多初学者可能都认为一个动态链接库肯定要有DllMain函数。其实不然,像很多仅仅包含资源信息的DLL是没有DllMain函数的。
2、系统是在什么时候调用DllMain函数的呢?静态链接时,或动态链接时调用LoadLibrary和FreeLibrary都会调用DllMain函数。DllMain的第二个参数fdwReason指明了系统调 Dll的原因,它可能是::DLL_PROCESS_ATTACH、DLL_PROCESS_DETACHDLL_THREAD_ATTAC、
DLL_THREAD_DETACH。
以下从这四种情况来分析系统何时调用了DllMain。
3、DllMain函数是DLL模块的默认入口点。当Windows加载DLL模块时调用这一函数。系统首先调用全局对象的构造函数,然后调用全局函数DLLMain。DLLMain函数不仅在将DLL链接加载到进程时被调用,在DLL模块与进程分离时(以及其它时候)也被调用。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10