В C является ли node.next-> prev таким же, как node-> next-> prev? - PullRequest
2 голосов
/ 01 мая 2020

Соответствует ли выражение node.next->prev тому же, что и node->next->prev?

1 Ответ

5 голосов
/ 01 мая 2020

В C по крайней мере один из node.next->prev и node->next->prev не будет компилироваться.

Если node объявлен как указатель на структуру (скажем, struct Node* node), тогда вы не можете использовать оператор . на нем, потому что . может применяться только к честным struct s, а не к указателям на них. В этом случае node.next->prev не будет компилироваться, а node->next->prev будет. И наоборот, если node определено как фактическая честность struct (скажем, struct Node node), то node->next->prev не будет компилироваться, поскольку -> может применяться только к указателям, тогда как node.next->prev воля.

При этом, намерение за этими двумя частями кода одинаково. Они оба означают «go для какого-либо узла, выберите его поле next, а затем прочитайте поле prev любого узла, который есть».

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