文章目录
1. typedef 和define 有什么区别
- 用法不同:typedef 用来定义一种数据类型的别名,增强程序的可读性。define 主要用来定义 常量,以及
书写复杂使用频繁的宏。 - 执行时间不同:typedef 是编译过程的一部分,有类型检查的功能。define 是宏定义,是预编译的部分,其
发生在编译之前,只是简单的进行字符串的替换,不进行类型的检查。 - 作用域不同:typedef 有作用域限定。define 不受作用域约束,只要是在define 声明后的引用 都是正确
的。 - 对指针的操作不同:typedef 和define 定义的指针时有很大的区别。
注 意 : t y p e d e f 定 义 是 语 句 , 因 为 句 尾 要 加 上 分 号 。 而 d e f i n e 不 是 语 句 , 千 万 不 能 在 句 尾 加 分 号 。
2. 指针常量与常量指针区别
指 针 常 量 是 指 定 义 了 一 个 指 针 , 这 个 指 针 的 值 只 能 在 定 义 时 初 始 化 , 其 他 地 方 不 能 改 变 。 常 量 指 针 是 指 定 义 了 一 个 指 针 , 这 个 指 针 指 向 一 个 只 读 的 对 象 , 不 能 通 过 常 量 指 针 来 改 变 这 个 对 象 的 值 。 指 针 常 量 强 调 的 是 指 针 的 不 可 改 变 性 , 而 常 量 指 针 强 调 的 是 指 针 对 其 所 指 对 象 的 不 可 改 变 性 。 注 意 : 无 论 是 指 针 常 量 还 是 常 量 指 针 , 其 最 大 的 用 途 就 是 作 为 函 数 的 形 式 参 数 , 保 证 实 参 在 被 调 用 函 数 中 的 不 可 改 变 特 性 。
3. 简述队列和栈的异同
队 列 和 栈 都 是 线 性 存 储 结 构 , 但 是 两 者 的 插 入 和 删 除 数 据 的 操 作 不 同 , 队 列 是 “ 先 进 先 出 ” , 栈 是 “ 后 进 先 出 ” 。 注 意 : 区 别 栈 区 和 堆 区 。 堆 区 的 存 取 是 “ 顺 序 随 意 ” , 而 栈 区 是 “ 后 进 先 出 ” 。 栈 由 编 译 器 自 动 分 配 释 放 , 存 放 函 数 的 参 数 值 , 局 部 变 量 的 值 等 。 其 操 作 方 式 类 似 于 数 据 结 构 中 的 栈 。 堆 一 般 由 程 序 员 分 配 释 放 , 若 程 序 员 不 释 放 , 程 序 结 束 时 可 能 由 O S 回 收 。 分 配 方 式 类 似 于 链 表 。 它 与 本 题 中 的 堆 和 栈 是 两 回 事 。 堆 栈 只 是 一 种 数 据 结 构 , 而 堆 区 和 栈 区 是 程 序 的 不 同 内 存 存 储 区 域 。
4. 设置地址为0x67a9 的整型变量的值为0xaa66
int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa66;
注 意 : 这 道 题 就 是 强 制 类 型 转 换 的 典 型 例 子 , 无 论 在 什 么 平 台 地 址 长 度 和 整 型 数 据 的 长 度 是 一 样 的 , 即 一 个 整 型 数 据 可 以 强 制 转 换 成 地 址 指 针 类 型 , 只 要 有 意 义 即 可 。
5.C语言的结构体和C++的有什么区别
- C语言的结构体是不能有函数成员的,而C++的类可以有。
- C语言的结构体中数据成员是没有private、public和protected访问限定的。而C++的类的成员有这些访问
限定。 - C语言的结构体是没有继承关系的,而C++的类却有丰富的继承关系。
注 意 : 虽 然 C 的 结 构 体 和 C + + 的 类 有 很 大 的 相 似 度 , 但 是 类 是 实 现 面 向 对 象 的 基 础 。 而 结 构 体 只 可 以 简 单 地 理 解 为 类 的 前 身 。