Compartilhar via


Operações aritméticas em ponteiros (guia de programação do C#)

Este tópico aborda o uso de operadores aritméticos + e para manipular ponteiros.

ObservaçãoObservação

Você não pode executar quaisquer operações aritméticas nos ponteiros void.

Adição e subtração de valores numéricos para ou de ponteiros

You can add a value n of type int, uint, long, or ulong to a pointer, p,of any type except void*.O resultado p+n é o ponteiro resultante da adição de n * sizeof(p) to the address of p.Da mesma forma, p-n é o ponteiro resultantes da subtração de n * sizeof(p) do endereço do p.

A subtração de ponteiros

Você também pode subtrair ponteiros do mesmo tipo.O resultado é sempre do tipo long.Por exemplo, se p1 e p2 são ponteiros do tipo pointer-type*, em seguida, a expressão p1-p2 resulta em:

((long)p1 - (long)p2)/sizeof(pointer_type)

Não permitir exceções são geradas quando a operação aritmética estoura o domínio do ponteiro e o resultado depende da implementação.

Exemplo

// compile with: /unsafe
class PointerArithmetic
{
    unsafe static void Main() 
    {
        int* memory = stackalloc int[30];
        long difference;
        int* p1 = &memory[4];
        int* p2 = &memory[10];

        difference = p2 - p1;

        System.Console.WriteLine("The difference is: {0}", difference);
    }
}
// Output:  The difference is: 6

Especificação da linguagem C#

Para obter mais informações, consulte Especificação de linguagem do C# A especificação da linguagem é a fonte definitiva para a sintaxe e o uso da linguagem C#.

Consulte também

Referência

Não seguro código e ponteiros (guia de programação do C#)

Expressões de ponteiro (guia de programação do C#)

Operadores de C#

Manipulação de ponteiros (guia de programação do C#)

Tipos de ponteiro (C# Programming Guide)

não seguros (C# Reference)

Instrução fixed (referência de C#)

stackalloc (referência de C#)

Conceitos

Guia de programação do C#

Outros recursos

Tipos (referência de C#)