c - 如何将 void* 指针 1 分配给 void* 指针 2?面临一些问题

原文 标签 c memory pointers

void* ptr1 = NULL;
void* ptr2 = ptr1;
unsigned int *buf = data;//some buffer

//now
ptr2 = buf + 8;

上述ptr2地址的变化并没有体现在ptr1中。
我正在尝试 void* ptr2 = &ptr1;也。

请让我知道这里的错误是什么。

最佳答案

为什么ptr1会跟随ptr2?

如果您希望 ptr1 与 ptr2 具有相同的地址,那么您可以将其设置为 ptr2:

ptr1 = ptr2;

在您的帖子中 ptr1 仍然指向 NULL。所以你需要明确告诉它指向ptr2。

画图让它更清晰,所以去吧:

alt text http://img705.imageshack.us/img705/2433/pointers.png

现在你有 2 个指针指向一些数据或没有数据(NULL)。如果您希望一个指针跟随另一个指针,您需要一个指向指针(2 个星号)的指针,而不仅仅是一个指针(1 个星号)。
void** ptr1  = (void**) &ptr2;

关于c - 如何将 void* 指针 1 分配给 void* 指针 2?面临一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2493313/

相关文章:

java - "java.lang.OutOfMemoryError: unable to create new native thread"运行 Storm 拓扑时

objective-c - "stringWithString"与 "alloc ... initWithString ... autorelease"

java - 分配后,类数据成员保持不变

C++ 分配节点指针

c - 在 C 中写入文件时出现段错误

c - 不断得到0.00作为答案

c++ - 如何识别共享库,其功能当前正在由可执行文件执行

c - 通过指向不完整数组类型的指针将多维数组传递给没有最合适大小的函数

memory - VHDL - 如何优雅地初始化 std_logic_vector 数组?

c++ const指针与运算符[]