void* ptr1 = NULL;
void* ptr2 = ptr1;
unsigned int *buf = data;//some buffer
//now
ptr2 = buf + 8;
Run Code Online (Sandbox Code Playgroud)
上述ptr2地址的变化不会反映在ptr1中.我void* ptr2 = &ptr1;
也在努力.
请告诉我这里的错误.
为什么ptr1会跟随ptr2?
如果你想让ptr1与ptr2具有相同的地址,那么你可以将它设置为ptr2:
ptr1 = ptr2;
Run Code Online (Sandbox Code Playgroud)
在你的帖子中,ptr1仍然指向NULL.所以你需要明确告诉它指向ptr2.
绘图使得它更清晰,所以去吧:
alt text http://img705.imageshack.us/img705/2433/pointers.png
现在你有2个指针指向某些数据或没有数据(NULL).如果你想要一个指针跟随另一个指针,你需要一个指向指针(2个星号)的指针,而不仅仅是一个指针(1个星号).
void** ptr1 = (void**) &ptr2;
Run Code Online (Sandbox Code Playgroud)