Практическое руководство. Доступ к элементу массива с использованием указателя (Руководство по программированию в 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#)
Оператор fixed (Справочник по C#)