Как мне мысленно разобрать это утверждение?
Я столкнулся со следующим утверждением, и был опровергнут.
++(*q)->len;
q
представляется непрерывным массивом памяти, который, судя по всему, представляет собой массив указателей на structs
; справиться с новой кодовой базой, извините за неопределенность.
С вышеприведенным утверждением мы разыменовываем q
, чтобы получить значение, которое является указателем, который мы затем разыменовывать и получить доступ к полю len
что мы тогда увеличиваем? В коде то, что я пытаюсь сказать, это ++((*q)->len)
, будет явным исполнением.
Или я должен читать это как, мы разыграли q
а затем увеличиваем значение, которое мы затем разыменовываем и получаем len
поле, из struct
это впереди q
до приращения. Опять же, в коде, что я пытаюсь сказать, это (++(*q))->len
, будет явным исполнением.
Любое руководство будет великим
ОБНОВЛЕНИЕ: я думаю, что первый анализ имеет смысл ++((*q)->len)
, как если бы это был второй случай, мы бы получили значение len
а потом ничего не делать с этим.
1 ответ
*q
на самом деле не означает, что это непрерывный массив памяти. Ответ в том, что это увеличивает len
поле объекта структуры в ячейке памяти q