« Introduction au langage C/Pointeurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Thierry46 (discussion | contributions)
Suppression bandeau ébauche
m Bot : Remplacement de texte automatisé (-<br/> +<br />); changement de type cosmétique
Ligne 10 :
 
:''' Déclaration '''
::''type * identificateur;''<br />
::La variable ''identificateur'' est un pointeur vers une variable de type ''type''.
:''' L'opérateur & '''
::Il permet d'obtenir un pointeur vers une variable.<br />
::''&identificateur'' permet d'obtenir un pointeur vers la variable ''identificateur'' . Il renvoie en réalité une adresse mémoire, l'adresse où est stockée physiquement la variable ''identificateur''. C'est donc une variable pointeur.
:''' L'opérateur * '''
Ligne 44 :
 
== Dangers liés aux pointeurs ==
=== Le problème ===
Les pointeurs ont énormément d'applications et permettent notamment l'accès à la totalité des zones de la mémoire, ce qui peut être dangereux car le programme pourrait lire ou écrire une zone qui ne correspond pas à la donnée souhaitée.
 
Ligne 51 :
L'utilisation de pointeurs peut conduire à des programmes incompréhensible pour des programmeurs habitués à d'autres langages.
 
=== Quelques causes possibles ===
*Utiliser un pointeur non initialisé ou ayant valeur nulle.
*Passer une valeur au lieu d'un pointeur à un fonction comme <code>scanf</code>.
 
=== Les conséquences ===
Les systèmes d'exploitations modernes limitent les dégâts dus à ces erreurs : dès qu'un programme commence à écrire chez le voisin, il est arrêté.
 
Par contre, rien ne vous empêche d'effectuer ces opérations dans votre espace d'adressage, ce qui aura souvent des effets désastreux : écrasement de zones mémoires et erreur d'exécution ''incompréhensibles'' survenant de nombreuses lignes plus loin dans le programme.
 
=== Les solutions ===
Ne pas abuser de l'usage des pointeurs. Dans le cas des tableaux et des chaines de caractères, préférer leur parcours en utilisant des indices entre crochets.