error : expected ';', '.' or ')' before '&' token in Code::Blocks

error : expected ';', '.' or ')' before '&' token in Code::Blocks

struct BinaryTree {
   struct BinaryTree * left;
   int data;
    struct BinaryTree * right;
} ;

typedef struct BinaryTree * IntPtr;

void Add( IntPtr & head, int data ) { // error
    scanf( "%d", &data );
    head = new IntPtr;
    head -> left = NULL;
    head -> data = data;
    head -> right = NULL;
} // Add()

为什么显示“错误:应为‘;’、‘.’或 ')' 在 '&' 标记之前 ?

int main( )
{
    IntPtr head = NULL;
    int data = 0;
    Add( head, data );
} // main()

我不明白为什么会出错。我第一次使用Code::Blocks。

IntPtr & head

此语法不是 C 语言。引用仅存在于 C++ 中。如果你指的是一个指针,那么它是一个星号,而不是一个符号。

void Add( IntPtr & head, ...

head = new IntPtr;

好像是C++,在C中你不能使用那样的语法。您可以传递指针而不是使用引用(不要忘记分配内存)。

head -> left = NULL;
head -> data = data;
head -> right = NULL;

在 C 中,不能在变量和 -> 之间使用 space。您必须消除 space 如下所示:

head->left = NULL;
head->data = data;
head->right = NULL;