c++ - 这个 Actor 分配了什么? C风格选角

标签 c++ c casting

这是我在这里提出的第一个问题。 我目前正在尝试了解这段代码是如何工作的。 我基本上想为 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/

相关文章:

c - 我的输入正在被消耗

c - 在 C 中使用类型#define 值进行除法

c++ - 喜欢 atoi 但要漂浮

java - 如何将两个字节变成 Long? 0x7 + 0x86 = 0x1c000

c++ - 你如何在 Qt 中获得一个小部件的 child ?

c++ - Qt/C++ : Is there a way to automatically register meta types?

c - 交换字节中的位

c# - 同时使用值和引用类型的泛型的协方差解决方法

c++ - 使用 C++ 与 Stockfish shell 交互

c++ - 机器的基本字符集