1. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个
#define MIN(A,B) ((A) <= (B) (A) : (B))
2.宏定义得到一个数组所含的元素个数
#define ARR_SIZE(a)(sizeof((a))/sizeof((a[0])))
3. 用宏定义得到一个字的高位和低位字节
#define WORD_LO(XXX)((byte)((word)(xxx)&255))
#define WORD_HI(XXX)((byte)((word)(xxx)>>8))
4. 内联函数与宏有什么区别
参考答案:内联函数在编译时展开,宏在预编译时展开
在编译的时候内联函数可以直接被嵌入到目标代码中,而宏只是一个简单的文本替换
内联函数可以完成诸如类型检测、语句是否正确等编译功能,宏就不具备这样的功能
inline函数是函数,宏不是函数。
宏在定义时要小心处理宏参数(一般情况把参数用括号括起来),否则容易出现二义性。
5. 构体(struct)和联合体(union)的区别?
参考答案:struct可以定义一个包含多个不同变量的类型,每一个变量在内存中占有自己独立的内存空间,可以同时存储不同类型的数据。
union也可以定义一个包含多个不同变量类型,但这些变量只共有同一个内存空间,每次只能使用其中的一种变量存储数据。
6. C++中的4种类型转换方式
参考答案:static_cast、dynamic_cast、reinterpret_cast、和const_cast。
7. Heap与stack的差别
参考答案:stack是栈,Heap是堆。
Stack的空间由操作系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C中的malloc函数分配的内存空间即在堆上,C++中对应的是new操作符。
程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行
评论列表
文章目录