При создании глобальной переменной структуры для связанного списка он говорит, что в противном случае он работает некорректно - PullRequest
0 голосов
/ 07 декабря 2018

Я создал эту структуру и пытаюсь выполнить основные операции с помощью созданных мной функций.Моя программа работает, но я должен объявить переменную temp внутри каждой функции.Я попытался сделать его глобальным, но там написано " незаконная инициализация ".

struct node
{
    int data;
    struct node* next;
};
struct node* head=NULL;
struct node* temp=(struct node*)malloc(sizeof(struct node));

//If I remove the above line and move it to the disp function it works    
//but in this case it says illegal initialization

void disp()
{
    temp=head;
    while(temp!=NULL)
    {
        printf(" %d ",temp->data);
        temp=temp->next;
    }
}

Должен ли я добавить всю программу в этот код?

1 Ответ

0 голосов
/ 07 декабря 2018

В C глобальные переменные инициализируются компилятором и, следовательно, должны быть постоянными значениями, такими как NULL в первой строке.Но в вашем случае вы пытаетесь вызвать функцию (malloc ()), которая не разрешена.

Источник: https://www.geeksforgeeks.org/initialization-global-static-variables-c/

...