我只是想在遞回函式中傳遞我的結構,但是在函式中,當我再次傳遞它時,它將成為我的結構的引數。我可以得到正確的值,但我得到錯誤“從不兼容的指標型別 [-Wincompatible-pointer-types]gcc 傳遞 'search' 的引數 1 ”
typedef struct node_t
{
int keyVal;
struct node_t *leftNode;
struct node_t *rightNode;
struct node_t *parent;
}Node;
typedef struct tree_t
{
struct node_t *root;
}List;
Node *search( List *temp, int value)
{
Node *curr=temp->root;
if (curr == NULL || curr->keyVal == value)
return curr;
if (curr->keyVal < value)
return search(&(curr->leftNode), value); //here I'm getting a warning
^^^
return search(&(curr->leftNode), value); //the same here
} ^^^
uj5u.com熱心網友回復:
Node *search( List *temp, int value)這需要Listakatree_t作為第一個引數。
在return search(&(curr->leftNode), value);中curr->leftNode是一個Nodeaka node_t。這是不同的型別,編譯器抱怨指標型別不兼容是正確的。
一個可能的解決方法是將函式簽名更改為Node * search( Node * curr, int value)并洗掉Node *curr=temp->root;。search(x->root, xxx);與您的List. 遞回呼叫將是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440916.html
上一篇:風格觸發器導致控制失去主題
