中兴笔试题目解析:常量定义、宏编程与 sizeof 示例

需积分: 7 0 下载量 135 浏览量 更新于2024-09-11 收藏 69KB DOC 举报
本资源主要涉及中兴公司的笔试题目,包括编程语言基础和数据结构方面的内容。首先,提到了如何使用预处理指令`#define`来声明常量,例如定义一个表示一年总秒数(假设不考虑闰年)的常量,需要注意在16位机上使用无符号长整型`UL`避免溢出问题: ```markdown 知识点1: `#define` 常量声明 在C/C++编程中,`#define` 用于定义预处理器宏,如: ```cpp #define SECONDS_PER_YEAR (60*60*24*365) UL 这定义了一个常量,表示一年中的总秒数,使用`UL`确保在16位机器上不会发生整型溢出。 其次,资源中介绍了一个基础的宏定义`MIN`,用于返回两个参数中的较小值,注意括号的使用以确保正确优先级: ```cpp #define MIN(A, B) ((A) <= (B) ? (A) : (B)) 宏定义中括号用于明确参数的顺序和优先级。 接着,涉及到`sizeof`运算符的应用,题目展示了不同类型的变量(字符指针、字符数组、整型数组以及结构体)的内存占用情况: - `char* ss1` 和 `char q1` 是指针,它们占用固定大小(通常是4个字节),而实际存储的字符串长度取决于具体内容。 - `char ss2[]` 和 `char ss3[]` 是字符数组,`ss2` 的大小取决于初始化的字符串长度加终止符,`ss3` 按照预分配的100个字符计算。 - 数组 `int ss4` 和 `char q2` 以其元素类型决定大小,`ss4` 占4个字节/元素,`q2` 同样考虑字符数量及隐含的终止符。 - 结构体 `class A`, `class A2`, `struct B`, `struct C`, `struct D` 的大小由内部成员决定,`main` 中的输出展示了这些类型的大小。 最后,给出了一个程序代码示例,展示了不同类型对象在内存中的占用大小,以及动态分配的对象和静态对象的区别。`sizeof` 运算符在这里用于计算它们在内存中的实际尺寸。 通过这部分内容,考生可以复习基本的宏定义技巧,数据类型和内存管理,以及C++语言的 sizeof 操作。对于准备中兴笔试的人来说,这是一份实用且重要的复习资料。