What does the warning - expected ‘struct node **’ but argument is of type ‘struct node **’ mean?
<p>My code for tree creation from array:</p>

<pre><code>#include&lt;stdio.h&gt;
#include&lt;malloc.h&gt;
typedef struct
{
    struct node* left;
    struct node* right;
    int val;
}node;

void create_tree(node** root,int val)
{

    if(*root == NULL )
    {
        *root = (node*)malloc(sizeof(node));
        (*root)-&gt;val = val;
        (*root)-&gt;left = NULL;
        (*root)-&gt;right = NULL;
        return;
    }   
    if((*root)-&gt;val &lt;= val )
        create_tree(&amp;((*root)-&gt;left),val);
    else
        create_tree(&amp;((*root)-&gt;right),val);

    return ;    
}



int main()
{
    node *root = (node*)malloc(sizeof(node));
    root-&gt;val = 10;
    root-&gt;left = NULL;
    root-&gt;right = NULL;
    int val[] = { 11,16,6,20,19,8,14,4,0,1,15,18,3,13,9,21,5,17,2,7,12};
    int i;
    for(i=0;i&lt;22;i++)   
        create_tree(&amp;root,val[i]);
    return 0;
}
</code></pre>

<p>warning I am getting:</p>

<pre><code>tree.c:10:6: note: expected ‘struct node **’ but argument is of type ‘struct node **’
 void create_tree(node** root,int val)
      ^
</code></pre>

<p>I am not able to understand what does this warning say? Both expected and actual are of type <code>struct node **</code>. Is it a bug?</p>