2016-02-13 3 views
-3

После частей моего кода не компиляции:ожидается '=', ';' .. раньше -> токен

struct Node { 
    int data; 
    struct Node *next; 
} 
struct Node head; 
head->next = NULL; 

сообщение об ошибке говорит: ошибка: ожидается, '=', '', ';', 'asm' или 'attrivute' перед '->' токеном head-> next = NUL;

+2

'head-> next' не просто shorcut for '(* head) .next', iff' head' - указатель. В вашем случае это не так, поэтому '* head' не имеет смысла. – fanton

+0

Вам нужна точка с запятой после закрывающей фигурной скобки вашего определения структуры. –

ответ

1

Как голова структура, а не указатель вы можете получить доступ к элементу с .:

head.next = NULL; 
1

головка не является указателем. Используйте «»:

head.next = NULL; 
0

Кроме того, что вы должны использовать точку доступа к членам, кажется, что вы помещаете исполняемый код в секции объявлений. head.next = NULL; должен находиться внутри функции.

+0

Объявление структуры может появляться внутри тела функции –

0

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

Try:

#include<stdio.h> 

struct Node { 
    int data; 
    struct Node *next; 
}; //Remember the ; 

int main(){ 
    struct Node head; 
    head.next = NULL; 

    //... 

    return 0; 
} 

Или:

#include<stdio.h> 

struct Node { 
    int data; 
    struct Node *next; 
}; //Remember the ; 

struct Node head; 

int main(){ 
    head.next = NULL; 

    //... 

    return 0; 
} 
1

ошибка нет запятой после определения структуры:

struct Node { 
    int data; 
    struct Node *next; 
} ; /* <==== here */ 
Смежные вопросы