Addition operator +
The +
(addition) operator yields the sum of its
operands. Both operands must have an arithmetic type, or one operand must
be a pointer to an object type and the other operand must have an integral
or enumeration type.
When both operands have an arithmetic type, the usual arithmetic conversions on the operands are performed. The result has the type produced by the conversions on the operands and is not an lvalue.
A pointer to an object in an array can be added to a value having
integral type. The result is a pointer of the same type as the pointer operand.
The result refers to another element in the array, offset from the original
element by the amount of the integral value treated as a subscript. If the
resulting pointer points to storage outside the array, other than the first
location outside the array, the result is undefined. A pointer to one
element past the end of an array cannot be used to access the memory content
at that address. The compiler does not provide boundary checking on the
pointers. For example, after the addition,
ptr
points to
the third element of the array: int array[5];
int *ptr;
ptr = array + 2;