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


Практическое руководство. Увеличение и уменьшение указателей (руководство по программированию в C#)

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

Используйте операторы увеличения и уменьшения, ++ и --, для изменения положения указателя на значение sizeof (pointer-type) применительно к указателю, имеющему тип "тип указателя*". Выражения увеличения и уменьшения принимают следующую форму:

++p;
P++;
--p;
p--;

Операторы увеличения и уменьшения можно применять к указателям любого типа, кроме типа void*.

Результатом применения оператора увеличения к указателю типа pointer-type является добавление значения sizeof (pointer-type) к адресу, содержащемуся в переменной указателя.

Результатом применения оператора уменьшения к указателю типа pointer-type является вычитание значения sizeof (pointer-type) из адреса, содержащегося в переменной указателя.

При переполнении в результате выполнения этой операции домена указателя исключений не генерируется, а результат зависит от конкретной реализации.

Пример

В этом примере выполняется перемещение по массиву путем увеличения значения переменной указателя на размер типа int. После выполнения каждого шага отображается адрес и содержимое элемента массива.

// compile with: /unsafe
class IncrDecr
{
    unsafe static void Main()
    {
        int[] numbers = {0,1,2,3,4};

        // Assign the array address to the pointer:
        fixed (int* p1 = numbers)
        {
            // Step through the array elements:
            for(int* p2=p1; p2<p1+numbers.Length; p2++)
            {
                System.Console.WriteLine("Value:{0} @ Address:{1}", *p2, (long)p2);
            }
        }
    }
}
Value:0 @ Address:12860272
Value:1 @ Address:12860276
Value:2 @ Address:12860280
Value:3 @ Address:12860284
Value:4 @ Address:12860288

См. также

Основные понятия

Руководство по программированию в C#

Ссылки

Выражения указателей (Руководство по программированию на C#)

Операторы C#

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

Типы указателей (руководство по программированию в C#)

unsafe (Справочник по C#)

Оператор fixed (Справочник по C#)

stackalloc (Справочник по C#)

Другие ресурсы

Типы (справочник по C#)