Opérations arithmétiques sur les pointeurs (Guide de programmation C#)
Cette rubrique décrit l'utilisation des opérateurs arithmétiques + et - pour manipuler les pointeurs.
Notes
Vous ne pouvez pas exécuter d'opérations arithmétiques sur les pointeurs void.
Ajout et soustraction de valeurs numériques vers ou à partir de pointeurs
Vous pouvez ajouter une valeur n de type int, uint, long, ou ulong à un pointeur, p,de n'importe quel type à l'exception de void*. Le résultat p+n est le pointeur résultant de l'ajout de n * sizeof(p) to the address of p. De même, p-n est le pointeur qui résulte de la soustraction de n * sizeof(p) de l'adresse de p.
Soustraction des pointeurs
Vous pouvez également soustraire des pointeurs du même type. Le résultat est toujours du type long. Par exemple, si p1 et p2 sont des pointeurs du type pointer-type*, alors l'expression p1-p2 produit le résultat :
((long)p1 - (long)p2)/sizeof(pointer_type)
Aucune exception n'est générée lorsque l'opération arithmétique produit un dépassement de capacité sur le domaine du pointeur, et le résultat dépend de l'implémentation.
Exemple
// 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
Spécification du langage C#
Pour plus d'informations, voir la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.
Voir aussi
Référence
Pointeurs et code unsafe (Guide de programmation C#)
Expressions de pointeur (Guide de programmation C#)
Manipulation de pointeurs (Guide de programmation C#)
Types pointeur (Guide de programmation C#)
fixed, instruction (référence C#)