C 如何将void*pointer1分配给void*pointer2?面临一些问题

C 如何将void*pointer1分配给void*pointer2?面临一些问题,c,memory,pointers,C,Memory,Pointers,ptr2地址的上述变化未反映在ptr1中。 我正在尝试void*ptr2=&ptr1也是 请告诉我这里出了什么错 为什么ptr1会跟随ptr2 如果您希望ptr1具有与ptr2相同的地址,则应将其设置为ptr2: void* ptr1 = NULL; void* ptr2 = ptr1; unsigned int *buf = data;//some buffer //now ptr2 = buf + 8; 在您的帖子中,ptr1仍然指向NULL。所以你需要明确地告诉它指向ptr2 画画会让

ptr2地址的上述变化未反映在ptr1中。
我正在尝试
void*ptr2=&ptr1也是


请告诉我这里出了什么错

为什么ptr1会跟随ptr2

如果您希望ptr1具有与ptr2相同的地址,则应将其设置为ptr2:

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

//now
ptr2 = buf + 8;
在您的帖子中,ptr1仍然指向NULL。所以你需要明确地告诉它指向ptr2

画画会让一切变得更加清晰,所以去做吧:

现在有两个指针指向某些数据或没有数据(NULL)。如果您希望一个指针跟随另一个指针,那么您需要一个指向指针(2个星号)的指针,而不仅仅是一个指针(1个星号)

指针指向一个对象。更改指针意味着将其指向其他位置。它不会改变指向的对象,也不会影响指向该对象的任何其他指针


这里有
ptr1
ptr2
这两个独立变量,每个变量都包含一个指针值。如果你希望一个变量的变化反映在另一个变量上,那么你实际上不需要两个独立变量,你只需要一个,并多次使用它。

您必须手动更新
ptr1
-它是一个与
ptr2
完全无关的变量,它们会独立更改值。

如果您希望ptr1跟随ptr2:

void** ptr1  = (void**) &ptr2;

现在*ptr1跟在ptr2后面

就是这样发生的:


@Karthik,你能用一些格式编辑代码吗?另外,请重新表述问题,不容易理解您想要实现的目标。
void*ptr2=&ptr1-这将ptr2创建为指向类型void的指针,指针初始化为ptr1的地址,这和ptr1指向的地址不同。请注意,pt2实际上指向buf+8,所以我不是艺术家,图片不显示实际内存:)。@john,我花时间画这幅画时并没有看到你们的“想法”。(顺便说一句,这很明显,你很自命不凡地认为我必须模仿你的想法来想出这个。)既然你似乎对此感到不安,我就把你的回答改高了。@David V.-看起来比我的+1好。@JonH,如果你想+1我的回答,你实际上忘记了:)@David V.,你用什么来画这个?干净利落@Agnel Kurian,我使用了inkscape(www.inkscape.org)
void** ptr1  = (void**) &ptr2;
void* ptr2 = NULL;
void** ptr1 = (void **)&ptr2;
unsigned int *buf = data;//some buffer

//now
ptr2 = buf + 8;