+ (加法) 演算子は、そのオペランドの合計を生成します。 オペランドは両方とも算術型を保持するか、 一方のオペランドがオブジェクト型を指すポインターで、 もう一方のオペランドが整数型または列挙型を保持する必要があります。
オペランドが両方とも算術型のときは、オペランドに通常の算術変換を実行します。 結果には、オペランドの型変換によって生成される型が保持されます。結果は、 左辺値ではありません。
配列内のオブジェクトを指すポインターは、整数型を持つ値に 加算できます。結果は、ポインター・オペランドと同じ型のポインターになります。結果は、オリジナルのエレメントから、添え字として扱 われる整数値の量だけ相対位置変更された、配列の中の別のエレメントを参照します。 結果のポインターが、配列の外側のストレージ (配列の外側の最初のロケーション以外) を指す場合、結果は未定義です。 配列の終了を過ぎた 1 つのエレメントに対するポインターを使用して、 そのアドレスのメモリー内容にアクセスすることはできません。コンパイラーは、ポインターの境界検査は行いません。 例えば、以下のように、加算の後で ptr は 配列の 3 番目のエレメントを指します。
int array[5]; int *ptr; ptr = array + 2;
関連参照