C ++ Увеличение указателей наоборот - PullRequest
0 голосов
/ 16 ноября 2018

Мой вопрос прост: я просматриваю тему для своего среднесрочного завтрашнего утра, и сейчас почти час ночи, я не сплю с красными быками после долгой промежуточной недели.

Я проверил другие вопросы, но они больше похожи ++*ip или *ip = *ip+1 вопросы.

Так что вот так, надеюсь, я могу понять

Что значит

*(ip+1) = *ip;

означает

1 Ответ

0 голосов
/ 16 ноября 2018

Это значение объекта, на которое указывает ip, на объект после объекта, на который указывает ip. Это лучше объяснить на примере: Давайте предположим, что ip указывает на первый int в массиве int:

[4, 5, 10, -1]

Здесь ip будет указывать на 4.

ip+1

означает, что мы хотим переместить этот указатель на одну позицию вправо (теперь это указывает на 5)

*(ip+1) and *ip

- разыменование указателя. Это означает, что мы хотим оперировать значением объекта, а не самим указателем. Так что, сказав *(ip+1) = *ip;, вы хотите присвоить значение, на которое указывает ip, объекту, на который указывает ip + 1 (обычно следующий объект в массиве). После этого наш примерный массив будет выглядеть так:

[4, 4, 10, -1]

Обратите внимание, что для этого требуется, чтобы у вас была память, на которую указывает ip + 1. Это также работает с любым классом (не только целые)

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