面试准备每日五题:C++(四)——typedef&define、指针常量、队列&栈、地址赋值、C和C++结构体

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 + + 的 类 有 很 大 的 相 似 度 , 但 是 类 是 实 现 面 向 对 象 的 基 础 。 而 结 构 体 只 可 以 简 单 地 理 解 为 类 的 前 身 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值