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


Практическое руководство. Доступ к элементу массива с использованием указателя (Руководство по программированию в C#)

Обновлен: Ноябрь 2007

В небезопасной среде можно получить доступ к элементу в памяти посредством доступа к элементу указателя (см. пример ниже).

       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. Массив используется для отображения букв нижнего регистра и букв верхнего регистра в двух циклах 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#)