Compartir a través de


Operaciones aritméticas en punteros (Guía de programación de C#)

En este tema se analiza la utilización de los operadores aritméticos + y - para manipular punteros.

NotaNota

No se puede realizar ninguna operación aritmética en punteros nulos.

Sumar valores numéricos a punteros y restarlos de éstos

Puede agregar un valor n de tipo int, uint, long, o ulong a un puntero, p,de cualquier tipo excepto void*. El resultado p+n es el puntero que resulta de sumar n * sizeof(p) to the address of p. De forma similar, p-n es el puntero que resulta de restar n * sizeof(p) de la dirección de p.

Restar punteros

También es posible restar punteros del mismo tipo. El resultado siempre es de tipo long. Por ejemplo, si p1 y p2 son punteros del tipo pointer-type*, entonces la expresión p1-p2 da como resultado:

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

No se genera ninguna excepción cuando la operación aritmética desborda el dominio del puntero y el resultado depende de la implementación.

Ejemplo

// 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

Especificación del lenguaje C#

Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea también

Referencia

Código no seguro y punteros (Guía de programación de C#)

Expresiones de puntero (Guía de programación de C#)

operadores de C#

Manipular punteros (Guía de programación de C#)

Tipos de puntero (Guía de programación de C#)

unsafe (Referencia de C#)

fixed (Instrucción, Referencia de C#)

stackalloc (Referencia de C#)

Conceptos

Guía de programación de C#

Otros recursos

Tipos (Referencia de C#)