这个演员分配了什么? C风格铸造
这是我在这里的第一个问题。 我目前正试图了解这段代码如何工作。 我基本上想要将一个特定的值分配给类型为uint8_t
的名为“hv”的数组。 我不太明白这个演员是如何运作的。这个演员分配了什么? C风格铸造
for (i = 0; i < 4; i++) { hv[i] = *(uint16_t *)(h1 + 8 + i * 2);
}
我明白,它试图将第二部分转换为uint16_t指针,但我不知道第一个星号是干什么的。 帮助将不胜感激。
回答:
我假设h1
是一个指针。否则这根本就没有意义。
表达式(h1 + 8 + i * 2)
将给出一个新的指针,该指针相对于h1
被取消。到目前为止,取决于sizeof(*h1)
。偏移量为(8+i*2)*sizeof(*h1)
字节。
将(uint_16_t *)
放在它的前面会将其转换为uint_16_t指针。在前面加一个星号会给你这个内存位置的内容,视为uint_16_t。
代码等同于:
for (i = 0; i < 4; i++) { uint_16_t * tmp = (uint16_t *)(h1 + 8 + i * 2);
hv[i] = *tmp;
}
以上是 这个演员分配了什么? C风格铸造 的全部内容, 来源链接: utcz.com/qa/257422.html