Qu'est-ce qu'un pointeur?
Dans toutes les langues, un pointeur est un type de variable qui stocke une adresse mémoire, et vous pouvez soit leur demander de vous indiquer l' adresse sur laquelle ils pointent ou la valeur à l'adresse qu'ils pointent.
Un pointeur peut être considéré comme une sorte de marque-page. Sauf qu'au lieu d'être utilisé pour accéder rapidement à une page d'un livre, un pointeur est utilisé pour suivre ou mapper des blocs de mémoire.
Imaginez la mémoire de votre programme exactement comme un grand tableau de 65535 octets.
Les pointeurs pointent docilement
Les pointeurs mémorisent chacun une adresse mémoire et pointent donc chacun vers une seule adresse en mémoire.
En tant que groupe, les pointeurs mémorisent et rappellent les adresses de mémoire, obéissant à chacune de vos commandes ad nauseum.
Tu es leur roi.
Pointeurs en C #
Plus précisément en C #, un pointeur est une variable entière qui stocke une adresse mémoire comprise entre 0 et 65534.
Egalement spécifiques à C #, les pointeurs sont de type int et donc signés.
Cependant, vous ne pouvez pas utiliser d'adresses numérotées négativement, ni accéder à une adresse supérieure à 65534. Toute tentative de le faire lèvera une exception System.AccessViolationException.
Un pointeur appelé MyPointer est déclaré comme ceci:
int * MyPointer;
Un pointeur en C # est un entier, mais les adresses mémoire en C # commencent à 0 et s'étendent jusqu'à 65534.
Les objets pointus doivent être manipulés avec un soin tout particulier
Le mot unsafe est destiné à vous effrayer, et pour une très bonne raison: les pointeurs sont des objets pointus, et les objets pointus comme les épées, les haches, les pointeurs, etc. doivent être manipulés avec un soin particulier.
Les pointeurs permettent au programmeur de contrôler étroitement un système. Par conséquent, les erreurs commises risquent d'avoir des conséquences plus graves.
Pour utiliser des pointeurs, le code non sécurisé doit être activé dans les propriétés de votre programme et les pointeurs doivent être utilisés exclusivement dans des méthodes ou des blocs marqués comme non sécurisés.
Exemple de bloc non sécurisé
unsafe
{
// Place code carefully and responsibly here.
}
Comment utiliser les pointeurs
Lorsque des variables ou des objets sont déclarés ou instanciés, ils sont stockés en mémoire.
- Déclarez un pointeur à l'aide du préfixe de symbole *.
int *MyPointer;
- Pour obtenir l'adresse d'une variable, vous utilisez le préfixe de symbole &.
MyPointer = &MyVariable;
Une fois qu'une adresse est attribuée à un pointeur, ce qui suit s'applique:
- Sans le préfixe * pour faire référence à l'adresse mémoire pointée comme un int.
MyPointer = &MyVariable; // Set MyPointer to point at MyVariable
- Avec le préfixe * pour obtenir la valeur stockée à l'adresse mémoire pointée.
"MyPointer is pointing at " + *MyPointer;
Étant donné qu'un pointeur est une variable contenant une adresse mémoire, cette adresse mémoire peut être stockée dans une variable pointeur.
Exemple de pointeurs utilisés avec soin et de manière responsable
public unsafe void PointerTest()
{
int x = 100; // Create a variable named x
int *MyPointer = &x; // Store the address of variable named x into the pointer named MyPointer
textBox1.Text = ((int)MyPointer).ToString(); // Displays the memory address stored in pointer named MyPointer
textBox2.Text = (*MyPointer).ToString(); // Displays the value of the variable named x via the pointer named MyPointer.
}
Notez que le type du pointeur est un int. C'est parce que C # interprète les adresses mémoire comme des nombres entiers (int).
Pourquoi est-il int au lieu de uint?
Il n'y a aucune bonne raison.
Pourquoi utiliser des pointeurs?
Les pointeurs sont très amusants. Avec une grande partie de l'ordinateur contrôlée par la mémoire, les pointeurs permettent au programmeur de mieux contrôler la mémoire de son programme.
Surveillance de la mémoire.
Utilisez des pointeurs pour lire des blocs de mémoire et surveiller la façon dont les valeurs pointées changent au fil du temps.
Modifiez ces valeurs de manière responsable et suivez la manière dont vos modifications affectent votre ordinateur.