取消引用指向指针数组的空指针
De-referencing void pointer to a pointer array
我正在使用学校给我的线程库,并且很难理解如何将指针数组的引用传递给方法,或者更确切地说,我在取消引用和使用指针数组时遇到了问题。
我(相信我)理解的情况是:
int main(void)
{
Foo* bar = new Foo();
// Passing instance of Foo pointer by reference
CThread *myThread = new CThread(MyFunction, ACTIVE, &bar);
return 0;
}
UINT __stdcall MyFunction(void *arg)
{
Foo* bar = *(Foo*)(arg);
return 0;
}
我正在创建一个指向Foo对象的指针,并通过引用将其传递给运行MyFunction的线程,该线程接受一个void指针作为其参数。然后,MyFunction将"arg"强制转换为Foo指针,并取消对其的引用以获得原始对象。
当我想传递一个Foo指针数组而不是一个时,我的问题就出现了:
int main(void)
{
Foo* barGroup[3] =
{
new Foo(),
new Foo(),
new Foo()
};
// Passing instance of Foo pointer by reference
CThread *myThread = new CThread(MyFunction, ACTIVE, &barGroup);
return 0;
}
UINT __stdcall MyFunction(void *arg)
{
// This is wrong; how do I do this??
Foo* barGroup[3] = *(Foo[]*)(arg);
return 0;
}
用MyFunction(barGroup);
替换MyFunction(&barGroup);
(从而传递指向第一个元素的指针,而不是指向整个数组的指针)并使用嵌套指针:
Foo** barGroup = (Foo**)(arg);
然后您可以简单地使用barGroup[0]
、barGroup[1]
和barGroup[2]
。
相关文章:
- 数组的指针从不分段故障
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- 如何使用非类型模板参数传入指向数组的指针
- 如何使用C++初始化向量;脚本化值不是数组、指针或矢量错误
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- C++ 指向枚举数组的指针
- C++ 返回指向函数内定义的静态数组的指针是否有效?
- 从指向结构数组的指针中提取元素
- 为什么我们将 [ ] 与指向数组的指针一起使用?
- 如何将数组与指针一起使用?
- 在 for 循环中定义的临时数组,并分配给属于指针数组的指针
- 为什么数组到指针的输出不相关
- 尝试创建指向动态分配的字符数组的指针
- 如何初始化指向指针数组的指针?
- C++数组和指针的大小的结果
- 初学者关于数组和指针的问题
- 将 std::unique_ptr 重置为指向数组的指针有什么问题?
- 是复制了新数组还是指向结构中引用的数组的指针?