Почему следующее не работает, хотя оба указателя указывают на один и тот же адрес? - PullRequest
0 голосов
/ 15 мая 2019

Я изучаю структуры и связанные списки.Когда в качестве заголовка используется двойной указатель структуры, я не могу сделать так, чтобы он направлялся к следующему элементу без использования другого указателя структуры.

void pop(struct stack **headref,int element)
{
    struct stack *pop1=*headref;
    if(pop1==NULL)
    {
        return 0;
    }

    if(r==0)
    {
        printf("%d %d",*headref,pop1);
        //*headref=*headref->next     why doesnt this line work?
        *headref=pop1->next;
        free(pop1);
        return 1;
    }
}

1 Ответ

3 голосов
/ 15 мая 2019

-> имеет более высокий приоритет, чем *.

*headref->next означает *(headref->next), а pop1->next эквивалентно (*headref)->next.

Другими словами, вам не нужно pop1, если вы добавите пару скобок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...