方法 : ポインタのインクリメントとデクリメント (C# プログラミング ガイド)
更新 : 2007 年 11 月
pointer-type* 型のポインタの位置を sizeof (pointer-type) に従って変更するには、インクリメント演算子 ++ またはデクリメント演算子 -- を使用します。インクリメント式とデクリメント式には、次の書式を使用します。
++p;
P++;
--p;
p--;
インクリメント演算子とデクリメント演算子は、void* 以外のすべての型のポインタに適用できます。
pointer-type 型のポインタにインクリメント演算子を適用すると、ポインタ変数に格納されているアドレスに sizeof (pointer-type) が加算されます。
また、pointer-type 型のポインタにデクリメント演算子を適用すると、ポインタ変数に格納されているアドレスから sizeof (pointer-type) が減算されます。
演算がポインタのドメインをオーバーフローしても例外は生成されません。どのような結果が生じるかは実装によって異なります。
使用例
次の例では、ポインタを int のサイズだけインクリメントして、配列をステップ実行します。ステップごとに、配列要素のアドレスと内容を表示します。
// compile with: /unsafe
class IncrDecr
{
unsafe static void Main()
{
int[] numbers = {0,1,2,3,4};
// Assign the array address to the pointer:
fixed (int* p1 = numbers)
{
// Step through the array elements:
for(int* p2=p1; p2<p1+numbers.Length; p2++)
{
System.Console.WriteLine("Value:{0} @ Address:{1}", *p2, (long)p2);
}
}
}
}
Value:0 @ Address:12860272
Value:1 @ Address:12860276
Value:2 @ Address:12860280
Value:3 @ Address:12860284
Value:4 @ Address:12860288