簡體   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