[英]casting a void-pointer to a struct- pointer (in a function call)
我有一个头文件(将其称为gen.h),其中包含以下行:
typedef void* pNode;
SampleFunction(PNode node); /* just a function for example*/
现在,可以说我还有另一个源文件(part.c),它包含以下结构:
typdef struct _OBJ* POBJ;
typdef struct _OBJ
{
double xi;
double xf;
double yi;
double yf;
int key;
}
我想发送一个指向结构(PBOJ)的指针作为一个函数的参数(比如说SampleFunction),该函数希望得到一个指向void类型(pNode)的指针。 那我该怎么做呢?
下面的代码只是一个简单的示例,因此我没有写init,delete等。
struct _OBJ
{
double xi;
double xf;
double yi;
double yf;
int key;
};
typedef struct _OBJ* POBJ;
typedef void* pNode;
void SampleFunction(pNode node)
{
//null check
if(node == NULL)
{
//error
}
//Do Something
// ...
}; /* just a function for example*/
int main()
{
POBJ obj = new _OBJ;
SampleFunction((pNode)obj);
delete obj;
}
您可以像其他类型一样将其PNode
为PNode
因为void*
可以安全地指向任何其他类型。
由于PBOJ是指向_OBJ的指针,因此无需使用&
运算符就可以直接将其强制转换
POBJ Ptr;
SampleFunction((PNode)Ptr);
// or SampleFunction((void *)Ptr);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.