【发布时间】:2012-02-20 21:16:20
【问题描述】:
我正在尝试使用双 void 指针,但我对用法有点困惑。
我有一个 struct 包含一个 void ** 数组。
struct Thing{
void ** array;
};
struct Thing * c = malloc (sizeof(struct Thing));
c->array = malloc( 10 * sizeof(void *) );
所以如果我想为每个指针分配一个不同的对象并尝试检索值
// Option 1
*(c->array + index) = (void *) some_object_ptr;
// Option 2
c->array[index] = (void *) some_object_ptr;
然后,我有另一个函数提供指向每个单元格的(void *) item,而不是some_object_ptr。
如果我想检索some_object_ptr所指向的值,
我应该这样做吗
function return type is 'void *' and takes argument 'void *'
// Option 3
return (void**) item
// Option 4
return *((void**)item)?
奇怪的是,当我使用数组数组下标方法时,我不能使用选项 4,只能使用选项 3;当我使用*(c->array + index) 时,我只能使用 opt.4。而不是 opt.3。 ..
谁能告诉我这个?如果我做出任何无效的假设,请您纠正我吗?
【问题讨论】:
-
也许他需要它?
-
另外,选项 3 和 4 不一样,3 返回
void**,4 返回void*。item到底是什么? -
"那么,我有另一个函数,它给出指向每个单元格的 (void * item),而不是 'some_object_ptr'。"
-
在 Kevin,抱歉我刚刚编辑了
-
所以假设它是一个函数,它将 poinere 返回到 some_object_ptr 指向的对象,并且它以 void * 作为指向数组单元格的参数
标签: c void-pointers