左移对指针变量有什么作用?
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
指向的位置。之后,指针加一。
假设我有一个 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
指向的位置。之后,指针加一。