繁体   English   中英

将void指针转换为struct指针(在函数调用中)

[英]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;
}

您可以像其他类型一样将其PNodePNode因为void*可以安全地指向任何其他类型。

由于PBOJ是指向_OBJ的指针,因此无需使用&运算符就可以直接将其强制转换

POBJ Ptr;
SampleFunction((PNode)Ptr);
// or SampleFunction((void *)Ptr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM