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.
Nota |
---|
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#)
Manipular punteros (Guía de programación de C#)
Tipos de puntero (Guía de programación de C#)
fixed (Instrucción, Referencia de C#)