次の方法で共有


方法 : ポインタのインクリメントとデクリメント (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

参照

概念

C# プログラミング ガイド

参照

ポインタ式 (C# プログラミング ガイド)

C# の演算子

ポインタの操作 (C# プログラミング ガイド)

ポインタ型 (C# プログラミング ガイド)

unsafe (C# リファレンス)

fixed ステートメント (C# リファレンス)

stackalloc (C# リファレンス)

その他の技術情報

型 (C# リファレンス)