*pointer++
will increment the position of the pointer first but it will return the value that was pointed before the position of the pointer changed.
*pointer++
is equivalent to *(pointer++)
. This happens because the postfix ++
and --
operators have higher precedence than the indirection (dereference).
You can read more about the precedence order at this very helpful article at Wikipedia: https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence
To increment the value pointed to by pointer
, use (*pointer)++
.
To increment the position of the pointer and return the value that is pointed after the position of the pointer changed use *++pointer
.
Examples
The following example will increment the position of the pointer but return the value that was originally pointed.
By the end of the following block, pointer
will point to position 1 and the value
variable will have the value 11.
const unsigned int values[] = {11, 12, 14, 18}; const unsigned int *pointer = values; const unsigned int value = *pointer++;
The following example will increment the position of the pointer and return the value that the new position is pointing to.
By the end of the following block, pointer
will point to position 1 and the value
variable will have the value 12.
const unsigned int values[] = {11, 12, 14, 18}; const unsigned int *pointer = values; const unsigned int value = *++pointer;