c/c++笔试题
需积分: 0 155 浏览量
更新于2008-07-19
收藏 48KB DOC 举报
【C/C++笔试题知识点详解】
1. 表达式判断
在C/C++中,自增自减运算符的优先级和结合性决定了它们的执行顺序。题目中的四个表达式涉及到自增自减运算符的使用。A) `(a++)` 先自增再赋值,B) `[++a]` 先自增再赋值,C) `(a++) += a` 是错误的,因为`(a++)`不是一个有效的左值,不能作为赋值操作的目标,而D) `(++a) += (a++)`则会先自增`a`,然后将自增后的`a`与再次自增后的`a`相加。根据这些规则,可以依次得出答案:9, 10, 10, 11。
2. `sizeof`操作符
`sizeof`用于计算对象或类型的大小。在32位系统中:
- `(1)` `sizeof(str)`:计算字符串数组的大小,包括结束的空字符`\0`,所以是17。
- `(2)` `sizeof(p)`:`p`是一个指向字符的指针,其大小通常为32位系统的4字节。
- `(3)` `sizeof(n)`:`n`是一个整数,大小为4字节。
- `(4)` `Foo`函数中`str`是局部数组,`sizeof(str)`依然返回数组类型本身的大小,即4字节,不考虑实际分配的字符数。
- `(5)` `p`是一个指向void的指针,其大小在任何情况下都是4字节,不依赖于实际分配的内存大小。
3. 预处理指令
`(1)` `ifndef/define/endif`是预处理器指令,用于条件编译,防止头文件被多次包含。
`(2)` `#include <filename.h>`用于包含标准库头文件,`#include "filename.h"`用于包含用户定义的头文件。
`(3)` `extern "C"`的作用是在C++代码中调用C编译器编译的函数,保持函数名不被C++的名称修饰。
4. 数据类型限制
`(4)` `switch()`语句中不允许使用浮点型(实型)数据,因为C/C++的标准规定`switch`只接受整型或枚举类型。
5. 动态内存管理
`(1)` `GetMemory`函数分配内存并将其地址赋给`str`,`strcpy`拷贝字符串后,`Test`函数输出“hello”。
`(2)` 在`Test`函数中,释放内存后,`str`仍然指向原来的位置,但该位置的内存已释放,再次`strcpy`和输出会导致未定义行为。
`(3)` `GetMemory`返回的是一个栈上的局部变量的地址,返回后这个局部变量就失效了,因此`Test`函数中`str`指向的内存区域是无效的,输出结果不可预测。
6. 自定义`strcat`函数
`(1)` 自定义`strcat`函数的实现是通过遍历目标字符串直到找到结尾,然后逐个复制源字符串的字符到目标字符串的末尾。
`(2)` `strcat`返回`strDest`是为了符合C/C++标准库中的习惯,方便链式调用,比如`str = strcat(str, "world")`。
7. 模板类
C++模板类用于创建泛型代码,提高代码复用性和类型安全性。它们可以应用于各种数据类型,确保编译时类型检查,并且可以在运行时动态适应不同数据类型。
8. CSingleLock
在MFC(Microsoft Foundation Classes)中,`CSingleLock`是一个用于线程同步的类,它用于获取和释放对某一资源的独占访问权,通常与`CRITICAL_SECTION`等同步对象一起使用,保证多线程环境下的数据一致性。
chencheung
- 粉丝: 1
- 资源: 4
最新资源
- 深圳建设施工项目安全生产管理手册.docx
- 深圳建设施工项目职工伤亡事故报告管理制度.docx
- 深圳建设施工项目防护用品使用管理制度.docx
- 深圳建设施工项目安全生产教育培训管理制度.docx
- 深圳建设施工项目易燃、易爆、有毒、有害物品管理制度.docx
- 深圳建设施工项目班组安全活动管理制度.docx
- 深圳建设项目文明施工管理制度.docx
- 深圳建设项目安全生产技术措施管理制度.docx
- C#实用教程郑阿奇梁敬东程序源代码及电子课件
- 调查问卷系统源代码全套技术资料.zip
- 前端分析-2023071100789
- ieee14潮流计算程序,ieee14节点潮流计算报告,matlab
- ieee14潮流计算程序,ieee14节点潮流计算报告,matlab
- ieee14潮流计算程序,ieee14节点潮流计算报告,matlab
- 前端分析-2023071100789-y5
- welearn刷时长版本v3.0.bat