假设我有以下内容:
void **Init(int numElems)
{
//What is the best way to initialize 'ptrElems' to store an array of void *'s?
void **ptrElems = malloc(numElems * sizeof(void *));
return ptrElems;
}
//What is the best way to return a pointer pointing at the index passed as a parameter?
void **GetPtr(void **ptrElems, int index)
{
void **elem = elems + (index * sizeof(void *));
return elem;
}
首先,初始化“ptrElems”来存储指针数组的最佳方法是什么?我使用 malloc 是因为将其分配给数组在函数结束后不会持续存在。
其次,指向指定索引处的指针的最佳方式是什么?我尝试对“GetPtr”函数的第一行进行类型转换以确保正确的指针算术,但我收到警告“从不兼容的指针类型进行初始化”。有必要打字吗?
最佳答案
初始化应该以这种方式进行,只需记住在完成后再次free()
内存即可。
要获取特定元素的地址,您可以使用普通数组索引访问以及地址运算符&
:
void **GetPtr(void **ptrElems, int index)
{
void **elem = &ptrElems[index];
return elem;
}
关于c - 初始化并访问指针数组中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718594/