【发布时间】:2021-07-11 04:24:49
【问题描述】:
谁能解释一下这两行是什么意思?
short * two_byte_pointer = (short*) 10;
int * four_byte_pointer = (int*) 10;
我以为我们只能在等号前使用int*。但是怎么可能用short* 投射一个数字呢?你能解释一下指针是如何在 C 中转换的吗?
【问题讨论】:
-
我不确定它们是否是有效的说明,首先。
-
指针本质上描述了内存地址。转换为指针类型意味着“获取该值并将其视为内存地址”。所以
(short*)10的意思是“10 是一个内存地址,其中存储了short类型的值” -
我认为这会导致分段错误,因为您不允许访问位置 10 的内存。
-
@JHBonarius - 这在 Windows 和其他现代操作系统上绝对正确。但嵌入式系统是另一种野兽。
-
@klutt:将整数转换为指针并不是未定义的行为。 C 2018 6.3.2.3 5 允许。