c - C中的指针转换
问题描述
有人可以解释一下这两行是什么意思吗?
short * two_byte_pointer = (short*) 10;
int * four_byte_pointer = (int*) 10;
我以为我们只能int*
在等号之前使用。但是怎么可能用 铸造一个数字short*
?你能解释一下指针是如何在 C 中转换的吗?
解决方案
您的代码(例如第一行)意味着:
亲爱的编译器,这是一个指向 short 的指针short *
。
它被命名为two_byte_pointer
。
我希望它有一个赋值=
。
我正在考虑的价值是别的东西,但我希望你相信我,它是一个指向 short-Honest 的指针(short*)
。
我使用的值是 10。
如果我是您的编译器或阅读代码的同事,我一个字也不会相信。并非没有一些解释性评论和对环境描述的记忆部分的引用。
在某些内存映射特殊寄存器位于不寻常位置的嵌入式环境中,这可能是有意义的。也许不是,请参阅下面的 busybee 的评论。
我很确定这只是一个非常理论的例子,“10”只是“一个数字例子”。
two_byte
使用和命名变量four_byte
是基于对环境中类型大小的假设。除此之外,我会命名它pointer_to_two_byte
,稍微长一点,更精确(这里不讨论命名风格)。
推荐阅读
- javascript - SVG 视图框可以在 HTML 画布内吗?
- python - 显示不同比例的重叠额外刻度和标签
- php - OAuth 是否允许 localhost 进行调试?
- c# - 是什么导致 ComboBox 显示 `System.Data.DataRowView`
- react-native - 在 expo init 上找不到模块
- git - 如何在 git 存储库上移动标签
- ruby - kv 插件:检查 value 是否为数组,并将 value 分配给新字段
- kubernetes - 如何从java app(k8s)收集日志到fluentd(k8s)
- java - 为什么我的测试junit cucumber测试在一起运行时失败,但单独通过,在第二次测试中抛出没有这样的ID会话?
- ios - 拖动时更改表格视图单元格背景颜色