[英]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.