常规的C++/MFC基础知识测验试题
【C++/MFC基础知识测验试题解析】 一.填空题 1. 在WIN32平台上,数据类型的大小通常是固定的。sizeof(short)通常为2字节,sizeof(int)为4字节,sizeof(long)为4字节(在32位系统中;在64位系统中,long可能是8字节)。 2. 程序中,a << 3 表示a左移3位,相当于乘以2的3次方。因此,a = 3 << 3 = 24,b = 3。 3. htonl()函数用于将网络字节序转换为主机字节序。0x01是1的十六进制表示,转换后仍然是0x01。 4. 宏定义MAX_NUM等于300,所以nTemp = MAX_NUM * 10 = 3000。 5. szTemp数组初始为空字符串,其长度为1000个字节,strlen计算的是非空字符个数,所以初始时nLen2=0。strcpy后szTemp长度不变,nLen3仍为1000,但有效字符串长度为3(包括末尾的空字符)。pTemp是指向nTemp数组的指针,其sizeof结果是指针的大小,通常为4或8字节,取决于系统。szResult字符串格式化后的结果应为"1000,0,1000,3,04."。 6. MFC中的大部分类都是从CObject类派生而来的,这是MFC对象模型的基础。 7. 内存是进程范围,CPU调度针对进程,函数调用堆栈针对线程。 8. 函数bbb调用ccc(x),其中x的值传递为7。在ccc内部,x被赋值为2并输出,然后在if语句中重新赋值为3,但这个赋值不会影响外部的x。最后再次输出ccc中的x,值为3。回到bbb,输出外部x的值7。 二.改错题 1. func1中,delete pa时,pa可能为NULL,造成空指针解引用。func2中,new的值没有返回给func1,无法正确释放内存。 2. func2试图修改一个空指针p所指向的值,这会导致未定义行为。func1应该分配内存后再调用func2。 3. func1中,bbb的引用作为参数传递,func1内部改变的是bbb的引用,而func2中直接传递bbb的值,所以func1的第二个调用对bbb无影响。func1的参数b的类型是int的引用。 三.简答题 1. C语言是原始的面向过程的语言,C++在其基础上增加了面向对象特性。VC(Visual C++)是微软开发的C++编译器,包含了IDE和其他开发工具。MFC是Microsoft Foundation Classes的缩写,是微软提供的一套C++库,用于简化Windows应用程序开发,基于C++面向对象特性。 2. 函数重载的例子: ```cpp void print(int a) { cout << "整数: " << a << endl; } void print(double d) { cout << "浮点数: " << d << endl; } ``` 这两个函数名字相同,但参数类型不同,实现了功能的重载。 3. 开启新进程可以使用CreateProcess函数,开启新线程可以使用CreateThread函数。 4. SendMessage是同步的,它会等待消息被处理完才返回;PostMessage是异步的,它立即返回,消息会在接收方的消息队列中等待处理。 5. WaitForSingleObject用于等待指定的对象变为信号状态。对于CWinThread*类型的m_pThrd,等待m_pThrd->m_hThread意味着等待该线程执行完毕。 6. __stdcall、__cdecl、__pascal是不同的调用约定。__stdcall由被调用者清理参数栈,常用于Windows API;__cdecl由调用者清理参数栈,是C/C++默认约定;__pascal在某些旧的 Pascal 库中使用,与__stdcall类似,但在不同平台上可能会有所不同。 7. 添加异常处理的MyWriteFile函数: ```cpp int MyWriteFile(CString strFileName, CString strText) { int nRet = 0; try { CFile myFile; if (!myFile.Open(strFileName, CFile::modeWrite|CFile::shareExclusive|CFile::modeCreate, NULL)) { throw CFileException(); } int nLen = strText.GetLength(); myFile.Write((char*)(LPCSTR)strText, nLen); myFile.Close(); } catch (CFileException* pEx) { pEx->Delete(); nRet = -1; } catch (...) { nRet = -1; } return nRet; } ``` 8. "func"是函数名,表示一个可调用的实体,用于执行特定任务。变量ttt可能是func函数的实例,或者是func返回值的存储位置,具体用途需要上下文来确定。如果ttt是一个函数指针,它能用来调用对应的函数。
剩余18页未读,继续阅读
- wodemimihuayuan2012-02-06自带答案的,适合学生考试的复习
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助