次の方法で共有


方法 : ポインタを使用して配列要素にアクセスする (C# プログラミング ガイド)

更新 : 2007 年 11 月

unsafe コンテキストでは、次の例のようにポインタ要素アクセスを使用して、メモリ内の要素にアクセスできます。

       char* charPointer = stackalloc char[123];
      for (int i = 65; i < 123; i++)
      {
          charPointer[i] = (char)i; //access array elements
      }

角かっこ内の式は、暗黙的に int、uint、long、または ulong に変換できる必要があります。演算 p[e] は *(p+e) と等価です。C や C++ の場合と同様に、ポインタ要素アクセスでは、範囲外のエラーをチェックしません。

使用例

次の例では、123 のメモリ位置を文字配列 charPointer に割り当てます。この配列を使用して、2 つの for ループ中の小文字と大文字を表示します。

式 charPointer[i] と式 *(charPointer + i) は等価であり、どちらの式を使用しても同じ結果が得られます。

// compile with: /unsafe
class Pointers
{
    unsafe static void Main() 
    {
        char* charPointer = stackalloc char[123];

        for (int i = 65; i < 123; i++)
        {
            charPointer[i] = (char)i;
        }

        // Print uppercase letters:
        System.Console.WriteLine("Uppercase letters:");
        for (int i = 65; i < 91; i++)
        {
            System.Console.Write(charPointer[i]);
        }
        System.Console.WriteLine();

        // Print lowercase letters:
        System.Console.WriteLine("Lowercase letters:");
        for (int i = 97; i < 123; i++)
        {
            System.Console.Write(charPointer[i]);
        }
    }
}
Uppercase letters:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Lowercase letters:
abcdefghijklmnopqrstuvwxyz

参照

概念

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

参照

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

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

unsafe (C# リファレンス)

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

stackalloc (C# リファレンス)

その他の技術情報

型 (C# リファレンス)