« Introduction générale à la programmation/Pointeurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 48 :
 
DONC :
# Les pointeurs servent à éviter de saturer la pile avec un bloc de données trop important. Il vaut mieux créer un tableau de 10000 chaînes de caractères en tas(gestion par la mémoire virtuelle) que de le créer dans la pile avec tous les problèmes de gestion que cela implique (Surcharge, effondrement de la pile, buffer overflow, réécriture d'adresse de retour, etc ...). De plus avec les pointeurs multiples le contrôle sur les éléments d'un tableau multidimensionnel est beaucoup plus simple et aisé que sur un tableau monolithique en pile.
# L'utilisation de pointeurs est recommandé par le "Design Pattern" "FlyWheight" qui permet d'attribuer à un nombre conséquents d'objets un nombre limité de valeurs sans surcharger la mémoire avec toutes les valeurs possibles.
# Les pointeurs permettent de s'affranchir de la notion de méthode(fonction). (n entrées et une ou zéro sortie)
# Avec l'utilisation des pointeurs, on peut avoir n entrées et n+1 sortie (+1 = return)
# On préférera utiliser des tableaux, des structures, ou mieux, des objets pour résoudre ce type de problèmes.
# En C, les paramètres sont passés par valeur.
# Le c fait une copie des arguments de la fonctionméthode, et travaille avec cette copie.
# Les pointeurs permettent de passer les valeurs par adresses (en copiant la valeur de l'adresse), donc de travailler directement sur les données avec le risque de corrompre les données.
# On peut utiliser directement le nom d'une méthode comme argument parce que c'est aussi un pointeur. C'est d'ailleurs ce qui à permis la création du compilateur objet en C++ par Bjarns STROUSTRUP en utilisant une table de virtualisation intégré à une structure et des pointeurs sur méthodes.
# Le c fait une copie des arguments de la fonction, et travaille avec cette copie.
# On peut utiliser directement le nom d'une fonction comme argument parce que c'est un pointeur.
 
== Exemple d'algorithme pour d'utilisation de pointeurs de fonctions ==