Compartilhar via


Operações de aritméticas em ponteiros (guia de programação translation from VPE for Csharp)

Este tópico discute usando os operadores aritméticos + e - para manipular ponteiros.

Observação:

Não é possível executar quaisquer operações aritméticas nos ponteiros void.

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

Você pode adicionar um valor de n do tipo int, uint, longo, or ULong para um ponteiro, p,de qualquer tipo, exceto void*. O resultado p+n é o ponteiro resultante da adição n * sizeof(p) to the address of p. Da mesma forma, p-n é o ponteiro resultantes de subtração n * sizeof(p) do endereço do p.

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 resultados 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 a 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 = (long*)(p2 - p1);

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

Especificação da linguagem C#

Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:

  • 18.5.6 Aritmética de ponteiro

Consulte também

Conceitos

Guia de Programação C#

Referência

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

Ponteiro expressões (guia de programação translation from VPE for Csharp)

Operadores C#

Manipulação de ponteiros (guia de programação translation from VPE for Csharp)

Tipos de ponteiro (translation from VPE for Csharp Programming guia)

(referência C#) não seguros

Instrução fixa (referência C#)

stackalloc (translation from VPE for Csharp Reference)

Outros recursos

Tipos (referência C#)