这是我在这里提出的第一个问题。
我目前正在尝试了解这段代码是如何工作的。
我基本上想为 uint8_t
类型的名为“hv”的数组分配某个值。
我不太明白这个 Actor 阵容的作用/它是如何工作的。
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++ - 这个 Actor 分配了什么? C风格选角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610338/