comtois a écrit :voila ce que ça donne
http://perso.orange.fr/comtois/Doc/memory.html
Pour ma part je simplifierais encore, notamment ce passage :
Dans cet exemple, la variable Point1 réside à l’adresse @point1en mémoire.
En écrivant *PointCourant.Point = @point1,la variable *PointCourant est une variable de type pointeur et sa valeur est égale à @point1. On dit que *PointCourant pointe sur Point1 car sa valeur représente l’adresse de la variable Point en mémoire.
Comme la structure Point est attachée à *PointCourant (car *PointCourant.Point) on peut accéder (lire ou écrire) le contenu de Point1\x en écrivant *PointCourant\x.
En écrivant *PointCourant.Point = @point2,on déplace *PointCourant pour qu’il pointe sur Point2.
En écrivant à nouveau *PointCourant\x, on accède cette fois ci au contenu de Point2\x.
Les pointeurs permettent donc de se déplacer, de lire et d’écrire facilement en mémoire. De plus ils permettent aux programmeurs d’accéder à de grandes quantités de données sans coût supplémentaire suite à une duplication de ces données. Copier un pointeur est beaucoup plus rapide.
A mon avis une bonne partie de ce passage pourrait être mis sous forme de commentaires dans le code exemple.
ça ne serait plus autant détaillé certes , mais est-ce que ça nuierait à la compréhension , tout est expliqué avant non ?
Par exemple
Code : Tout sélectionner
Point1.Point
Point2.Point
*PointCourant.Point = @Point1 ; Récupère l'adresse de Point1
*PointCourant\x = 10 ; 10 est affecté à Point1\x
*PointCourant.Point = @Point2 ; Récupère l'adresse de Point2
*PointCourant\x = 20 ; 20 est affecté à Point2\x
Debug Point1\x
Debug Point2\x
Je suis d'accord pour dire qu'il y a redondance, mais cela s’appelle « expliquer un exemple ».
Puisque l’opportunité est donnée d’ajouter des compléments sur les pointeurs, je trouve qu’il est intéressant d’y trouver une explication pour bien démystifier.
Pour tous ceux qui utilisent les pointeurs, cela peut sembler excessif, mais je ne suis pas sur qu’un débutant le perçoive ainsi.
Maintenant, le question est : quel est le rôle/l’esprit de la Doc officielle ? Il est vrai qu’en général, la Doc est succincte et précise.
Il existe très peu d’exemples « expliqués » car plutôt commentés. (mais ca existe : voir 1er exemple de Define)
Pour respecter cet esprit, on peut tout à fait supprimer l’explication au profit de commentaires
Pour clarifier, j’ai fait une passe sur la rubrique entière que Comtois a compulsé pour vous livrer ma vision à la lumière des différents réclamations.
Pointeurs et accès mémoire
Plusieurs simplifications ont été opérées et entre autre:
- Suppression de la phrase « Cela permet d'accéder à la structure via le pointeur. »
Non explicite et explicité plus loin
- Suppression du titre « Notion sur les pointeurs en PureBasic » au profit des titres :
Pointeurs et taille mémoire
Pointeurs et structures
Pointeurs et chaînes de caractères
- Les remarques sont regroupées dans « Pointeurs et taille mémoire »
- Le passage sur l’arithmétique des pointeurs est bien trouvé : j’ai cependant changé « en utilisant » par « en s'aidant de » car on peut ajouter tout nombre à un pointeur, simplement SizeOf() facilite la détermination d’adresses valides.
Voila, j’espère que cela satisfera tout le monde, du moins je ne vois pas ce que je pourrais y apporter de plus.
Aussi, pour la suite, je laisse le soin à Comtois de valider quitte à ajuster.