前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(57)

基础知识 | 每日一练(57)

作者头像
小林C语言
发布2019-07-19 16:21:15
2380
发布2019-07-19 16:21:15
举报

基础知识练习

学生:如果 NULL 的值改变了, 比如在使用非零内部空指针的机器上,难道用 NULL (而不是 0) 不是更好吗?

小林:不。(用 NULL 可能更好, 但不是这个原因。) 尽管符号常量经常代替数字使用以备数字的改变, 但这不是用 NULL 代替 0 的原因。语言本身确保了源码中的0 (用于指针上下文) 会生成空指针。NULL 只是用作一种格式习惯。

学生:用预定义宏 #define Nullptr(type) (type *)0 帮助创建正确类型的空指针。

小林:这种技巧, 尽管很流行而且表面上看起来很有吸引力, 但却没有多少意义。在赋值和比较时它并不需要。它甚至都不能节省键盘输入。

学生:NULL 可以确保是 0, 但空 (null) 指针却不一定?

小林:使用术语 “null” 或 “NULL” 时, 可能意味着以下一种或几种含义:

1. 概念上的空指针。

2. 空指针的内部 (或运行期) 表达形式, 这可能并不是全零, 而且对不用的指针类型可能不一样。真正的值只有编译器开发者才关心。

3. 空指针常数, 这是一个常整数 0 。

4. NULL 宏, 它被定义为 0 。

5. ASCII 空字符 (NUL), 它的确是全零, 但它和空指针除了在名称上以外, 没有

任何必然关系。

6. “空串” (null string), 它是内容为空的字符串 ("")。在 C 中使用空串这个术语可能令人困惑, 因为空串包括空字符 (’\0’),但不包括空指针, 这让我们绕了一个完整的圈。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档