FAQ PureBasicConsultez toutes les FAQ

Nombre d'auteurs : 7, nombre de questions : 68, dernière mise à jour : 3 janvier 2013  Ajouter une question

 

Bienvenue dans la F.A.Q. PureBasic !

Celle-ci va tenter de répondre aux questions les plus fréquemment posées sur le langage PureBasic et tous ses outils de programmation. Si elle n'a pas pour vocation de répondre à toutes les interrogations possibles, elle reste une bonne base de connaissances sur le PureBasic, et ne demande qu'à être enrichie par vos expériences personnelles.

Bien entendu, malgré toute l'attention qui a pu être portée à cette F.A.Q., des erreurs ont toujours pu s'y glisser. Prenez donc toutes les précautions qui s'imposent avant d'essayer un exemple.

Nous vous souhaitons une bonne lecture ! Et n'oubliez pas qu'en cas de problème, vous pourrez toujours poser votre question sur le forum PureBasic !

L'équipe PureBasic de Developpez.


SommaireLes pointeurs et l'allocation mémoire (2)
précédent sommaire suivant
 

Pour définir un pointeur, on utilise le symbole * . On peut définir un pointeur sur différents types de données. En fait le type de données pointées importe peu et il s'agit surtout d'une commodité pour le programmeur, car comme le pointeur est une adresse, elle peut pointer sur n'importe quoi indifféremment.

Note : A l'inverse du C/C++, en PureBasic l'* fait partie intégrante du nom de la variable. Aussi ptr et *ptr sont deux variables bien distinctes. ptr est une variable (régulière) contenant une valeur, *ptr est une autre variable de type pointeur contenant une adresse.

On utilise l'opérateur @ pour récupérer l'adresse d'une variable.

Le pointeur contient un entier indiquant l'adresse des données vers lesquelles il pointe. Si on effectue une opération sur ce pointeur, on modifie l'adresse et non les données pointées. Il faudra donc utiliser une structure pour accéder aux données pointées.

Code purebasic : Sélectionner tout
1
2
3
4
5
6
7
 
Define.long *ptr; On crée un pointeur <br/> 
Define.l n ; Et un entier n  
n=10 ; A partir d'ici, on a n=10  
*ptr = @n ;  *ptr contient maintenant l'adresse de la variable n  
*ptr\l + 5  ;   Grâce au pointeur '*ptr' on peut modifier la valeur de n  
; Arrivé ici, n vaut 15

Mis à jour le 14 février 2008 comtois

En utilisant le mot clé Prototype.
Par défaut, la fonction utilisera la convention d'appel 'stdcall'. Si le pointeur de fonction appelle une fonction C utilisant la convention d'appel 'cdecl', PrototypeC est fortement conseillé.

Code purebasic : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
 
Procedure.f MaProcedure(a.f,b.f) 
  ProcedureReturn a*b 
EndProcedure 
 
Prototype.f MonProto(a.f,b.f=2) ; Définition d'un prototype avec un paramètre par défaut 
 
Define.MonProto Truc 
 
Truc=@MaProcedure() ; Récupère l'adresse de la procédure 
 
Debug Truc(3.0) ; le paramètre par défaut est facultatif

Mis à jour le 14 février 2008 comtois

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2018 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsable bénévole de la rubrique PureBasic : comtois -