Как мне мысленно разобрать это утверждение?

Я столкнулся со следующим утверждением, и был опровергнут.

++(*q)->len;

q представляется непрерывным массивом памяти, который, судя по всему, представляет собой массив указателей на structs; справиться с новой кодовой базой, извините за неопределенность.

С вышеприведенным утверждением мы разыменовываем q, чтобы получить значение, которое является указателем, который мы затем разыменовывать и получить доступ к полю lenчто мы тогда увеличиваем? В коде то, что я пытаюсь сказать, это ++((*q)->len), будет явным исполнением.

Или я должен читать это как, мы разыграли q а затем увеличиваем значение, которое мы затем разыменовываем и получаем len поле, из struct это впереди q до приращения. Опять же, в коде, что я пытаюсь сказать, это (++(*q))->len, будет явным исполнением.

Любое руководство будет великим

ОБНОВЛЕНИЕ: я думаю, что первый анализ имеет смысл ++((*q)->len), как если бы это был второй случай, мы бы получили значение len а потом ничего не делать с этим.

1 ответ

*q на самом деле не означает, что это непрерывный массив памяти. Ответ в том, что это увеличивает len поле объекта структуры в ячейке памяти q

Другие вопросы по тегам