ошибка: ожидается ';', '.' или ')' перед '&' токеном в Code :: Blocks - PullRequest
0 голосов
/ 09 апреля 2020
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.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2020
void Add( IntPtr & head, ...

head = new IntPtr;

Кажется, C ++, в C вы не можете использовать такой синтаксис. Вы можете передать указатель вместо использования ссылки (не забудьте выделить память).

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

В C нельзя использовать пробел между переменной и ->. Вы должны устранить пробел, как показано ниже:

head->left = NULL;
head->data = data;
head->right = NULL;
0 голосов
/ 09 апреля 2020
IntPtr & head

Этот синтаксис не C. Ссылки существуют только в C ++. Если вы имели в виду указатель, то это звездочка, а не амперсанд.

...