Share via


ポインター変換 (C# プログラミング ガイド)

定義済みの暗黙のポインター変換を次の表に示します。 暗黙の変換は、メソッドの呼び出しや代入ステートメントなど、多くの状況で発生することがあります。

暗黙のポインター変換

変換前

変換後

任意のポインター型

void*

null

任意のポインター型

明示的なポインター変換には暗黙の変換がなく、キャスト式を使用して変換を実行します。 これらの変換を次に示します。

明示的なポインター変換

変換前

変換後

任意のポインター型

他の任意のポインター型

sbyte、byte、short、ushort、int、uint、long、ulong

任意のポインター型

任意のポインター型

sbyte、byte、short、ushort、int、uint、long、ulong

使用例

次の例では、int へのポインターを byte へのポインターに変換しています。 このポインターは、変数のアドレスの最下位バイトを指すことに注意してください。 結果を int のサイズ (4 バイト) だけ連続してインクリメントすると、変数の残りのバイトを表示できます。

// compile with: /unsafe
class ClassConvert
{
    static void Main() 
    {
        int number = 1024;

        unsafe 
        {
            // Convert to byte:
            byte* p = (byte*)&number;

            System.Console.Write("The 4 bytes of the integer:");

            // Display the 4 bytes of the int variable:
            for (int i = 0 ; i < sizeof(int) ; ++i)
            {
                System.Console.Write(" {0:X2}", *p);
                // Increment the pointer:
                p++;
            }
            System.Console.WriteLine();
            System.Console.WriteLine("The value of the integer: {0}", number);

            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
        }
    }
}
    /* Output:
        The 4 bytes of the integer: 00 04 00 00
        The value of the integer: 1024
    */

参照

参照

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

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

unsafe (C# リファレンス)

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

stackalloc (C# リファレンス)

概念

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

その他の技術情報

型 (C# リファレンス)