首页 > 解决方案 > C中的指针转换

问题描述

有人可以解释一下这两行是什么意思吗?

short * two_byte_pointer = (short*) 10;

int * four_byte_pointer = (int*) 10;

我以为我们只能int*在等号之前使用。但是怎么可能用 铸造一个数字short*?你能解释一下指针是如何在 C 中转换的吗?

标签: cpointerscasting

解决方案


您的代码(例如第一行)意味着:

亲爱的编译器,这是一个指向 short 的指针short *
它被命名为two_byte_pointer
我希望它有一个赋值=
我正在考虑的价值是别的东西,但我希望你相信我,它是一个指向 short-Honest 的指针(short*)
我使用的值是 10。

如果我是您的编译器或阅读代码的同事,我一个字也不会相信。并非没有一些解释性评论和对环境描述的记忆部分的引用。

在某些内存映射特殊寄存器位于不寻常位置的嵌入式环境中,这可能是有意义的。也许不是,请参阅下面的 busybee 的评论。
我很确定这只是一个非常理论的例子,“10”只是“一个数字例子”。

two_byte使用和命名变量four_byte是基于对环境中类型大小的假设。除此之外,我会命名它pointer_to_two_byte,稍微长一点,更精确(这里不讨论命名风格)。


推荐阅读