-1

我有一组 void 指针,我想将它们放入一个 void 指针数组中。我从 malloc 开始:

void **p2vals=malloc(nelems*sizeof(void*));

..这给了我一个指向指针的数组。但是后来我想取消引用像 *p2vals 这样的 p2vals ,这应该让我得到一个 void 指针。当然编译器不喜欢它,但我需要它。我想设置

*(p2vals+someoffset)=somevoidptr;
4

2 回答 2

0

考虑,

int a = 5;
int *p = &a;

在这种情况下,我们向编译器表明 p 将指向一个整数。因此,众所周知,当我们*p在运行时执行类似的操作时,没有。将读取等于 int 大小的字节数。

取消引用 void 指针,编译器将不知道要准确读取多少字节。type在使用它们之前,您需要将它们类型转换为一些

于 2013-04-12T07:21:23.693 回答
0

如果您想将内存地址存储为变量,我建议您使用uintptr_t而不是void *。如果您想写入或读取任何偏移量,只需执行(uintptr_t)((char *)(pointer) + offset).

于 2013-04-12T07:30:16.773 回答