В соответствии стандартного документа C11
, глава 6.5.2.5, Постфикс инкремента и декремента
Результат постфикса ++ оператором является значение операнда. В качестве побочного эффекта значение объекта операнда увеличивается (то есть значение 1 соответствующего типа равно ).
Таким образом, всякий раз, когда вы используете оператор инкремента постфикса, вы не добавление какого-либо конкретного значения, скорее, вы addding значение 1 типа операнда, на котором оператор является используемый.
Теперь для примера,
chrArray
имеет тип char *
. Итак, если мы сделаем chrArray++
, в результате будет добавлено значение char
[sizeof(char)
, которое равно 1
].
OTOH, intArray
имеет тип int *
. Итак, если мы сделаем intArray++
, в результате будет добавлено значение int
[sizeof(int)
, которое равно 4
на 32-битной платформе, может меняться] будет добавлено к intArray
.
В основном, прирост оператора Postfix на переменнуюуказатель любых точек типа к следующему элементу (при условии, действительный доступ) этого типа.
См. [Арифметика указателей] (http://stackoverflow.com/questions/394767/pointer-arithmetic) –
Нет языка, который дает вам больше контроля над памятью, чем C (кроме сборки ...). С этим большим контролем возникает большая ответственность за то, что хранится в памяти в любом месте и как обрабатывать значение. Указатели - это просто переменные, но вместо того, чтобы удерживать то, что вы считаете нормальным значением, указатели удерживают адрес памяти, где хранится значение. Когда вы объявляете указатели, как вы делали выше, они ничего не удерживают, пока вы не назначите им адрес. Обычным примером является «int n = 5; int * p = & n; 'Здесь' p' содержит адрес 'n', где хранится значение' 5'. –