? Une des caractéristiques qui rend C un tel langage de programmation puissant est la possibilité pour les programmeurs d'accéder à la mémoire en utilisant directement les pointeurs. Les pointeurs sont largement utilisés dans C pour manipuler des tableaux de données , la manipulation des chaînes de caractères , passant des paramètres à des fonctions et à créer les listes chaînées et d'autres structures de données complexes. Les pointeurs sont l'une des plus grandes sources de confusion pour les programmeurs nouvelles pour le langage C . Comprendre et utiliser les pointeurs est essentielle à l'efficacité des programmes C .
pointer Pointeur : Prenez soin de nettoyer !
Fonction
Un pointeur d'objet , ou tout simplement pointeur est une variable qui contient une adresse mémoire où un objet , comme un struct ou float, ou un tableau d'objets , est stockée . Avec cette adresse mémoire , le programmeur peut lire, modifier et déplacer dans la mémoire à l'aide d'un pointeur.
Avantages
fonctions qui prennent un pointeur vers un externe objet passé en tant que paramètre peut modifier cet objet. Lorsque la fonction est terminée , la nouvelle valeur attribuée à cet objet va persister . Une fonction peut prendre plusieurs pointeurs , permettant à une seule fonction à modifier plusieurs objets avec un seul appel de fonction.
Un pointeur peut être utilisé pour naviguer à travers un ensemble d'éléments systématiquement ou de façon aléatoire en utilisant la notation de tableau , l'itération ou mathématiques de base . L'utilisation de pointeurs pour accès au tableau est plus rapide que les implémentations plus complexes de fonctionnalités similaires trouvés dans d'autres langues . Bien que ces implémentations sont souvent plus faciles à utiliser et à éviter les erreurs , il ya une charge supplémentaire qui affecte les performances .
Importance
La capacité d' allouer dynamiquement des quantités arbitraires de la mémoire du tas au cours de d'exécution est une technique appelée « allocation dynamique de mémoire . " Beaucoup de langues anciennes , comme Fortran , tenus la quantité de mémoire allouée à des structures telles que des tableaux pour être fixés au moment de la compilation , et la quantité de mémoire allouée ne pouvaient être modifiées au cours de l' exécution du programme . Les pointeurs sont utilisés dans C pour maintenir l'adresse de la mémoire allouée dynamiquement.
Utilisation
Un pointeur est déclaré en plaçant un astérisque (* ) entre le nom du type et de la nom de la variable .
la valeur d'un objet en mémoire à l'adresse tenue par le pointeur est accessible par " déréférencement " le pointeur. . Déréférencer un pointeur est fait en mettant un astérisque ( *) placé devant le nom du pointeur
Lors de la manipulation des pointeurs vers des structures, un membre de la struct est référencé à l'aide d'une flèche (->) entre le nom du pointeur et le nom du membre .
l'adresse d'un objet peut être consulté en plaçant une esperluette (& ) devant le nom de la variable de l'objet. En passant l'adresse d'un objet à une fonction est appelée " passer par référence . " Le paramètre est déclaré comme un pointeur dans le prototype de fonction . Les déréférence le paramètre à modifier sa valeur, et la valeur persisteront lorsque la fonction se termine .
Tableaux sont créés en affectant la quantité de mémoire nécessaire pour maintenir le nombre désiré d'objets d'un type donné . Ceci est accompli pendant ou après la déclaration de la notation du pointeur et malloc ou calloc , ou lors de la déclaration en utilisant la notation de tableau . Éléments d'un tableau peuvent être accessibles en utilisant la notation de référence de l'indice ou en réitérant le pointeur de tableau . Itération augmente ou diminue l' d'adresse de la taille d'un élément individuel automatiquement si le pointeur est positionné correctement au début de l'élément suivant ou précédent .
Attention
mémoire allocation et la libération est géré par le programmeur. Mémoire qui a été allouée doit être libérée quand elle n'est plus nécessaire . A défaut de libérer la mémoire empêche d'être utilisé jusqu'à ce que l'application se ferme . Une " fuite de mémoire " se produit lorsque une référence à la mémoire allouée est perdue sans libérer la première mémoire. Des fuites de mémoire peut se produire quand un pointeur est réaffecté , ou une fonction quitte sans déléguer la propriété de la mémoire allouée.
Accès à la mémoire au-delà de la fin de la mémoire allouée est une erreur commune lorsque vous travaillez avec des tableaux . Cette erreur est appelé ayant un "index de tableau hors limites ». Cela peut entraîner l'application de se comporter correctement ou quitter de façon inattendue.