左移对指针变量有什么作用?

What does a left shift do to a pointer variable?

假设我有一个 unsigned character pointer 'foo' 并且我使用 malloc 动态 为其分配了内存。这些操作对指针变量做了什么?假设 bar 被调用时 i 值分别为 2,4,6,8

void bar(int i, unsigned char* foo) {
    *foo++ = i>>24;
    *foo++ = i>>16;
    *foo++ = i>>8;
    *foo++ = i;
}

移位应用于 i,它不是指针,它是 int 类型的变量。

然后,结果赋值给指针foo指向的地方。

最后指针加一

例如,这个:

*foo++ = i>>24;

i 向右移动 24 位,然后取该结果并将其分配给 foo 指向的位置。之后,指针加一。