'Pass pointer of struct with recursive function
I'm just trying to pass my struct in recursive function, but in the function when I will pass it again it will be the argument of my struct. I could get the right value but I get the error "passing argument 1 of 'search' from incompatible pointer type [-Wincompatible-pointer-types]gcc "
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
} ^^^
Solution 1:[1]
Node *search( List *temp, int value) This takes a List aka tree_t as the first argument.
In return search(&(curr->leftNode), value); the curr->leftNode is a Node aka node_t. This is different type and the compiler is correct to complain about incompatible pointer type.
A possible fix would be to change the function signature to Node * search( Node * curr, int value) and remove Node *curr=temp->root;. Do the first call initiating the search as search(x->root, xxx); with your List. The recursive calls would then be correct.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
