Поделиться через


Преобразования указателей (Руководство по программированию на 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#)