C структура данных, переменные - PullRequest
0 голосов
/ 09 января 2020

Извините за вопрос noob

У меня есть структура:

typedef struct  s_test
{
    int         head;
    char        *end;
}               t_test;

Мой код:

int main()
{
   t_test a;
   t_test *b;
}

Чем отличается a.head от b->head ?. Почему я не могу набрать a->head или b.head ?. Я знаю, b это указатель, который содержит адрес переменной типа t_test.

1 Ответ

1 голос
/ 09 января 2020

Выполнение b->head - это просто удобная синтактика c сахар для выполнения (*b).head.

Вы должны разыменовать указатель на структуру, прежде чем сможете использовать на ней точечную запись, поэтому вы не можете do b.head.

Причина, по которой вы не можете сделать a->head, заключается в том, что a не является указателем, поэтому на него нельзя ссылаться. Оператор разыменования * имеет смысл только для указателей.

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