Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2702 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Differentes facons de passer un pointeur.....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Differentes facons de passer un pointeur.....

n°1402223
bartleby
Posté le 06-07-2006 à 18:17:29  profilanswer
 

Bonjour a tous,
 
Je suis relativement nouveau dans le language C++. J'ai recemment lu un article sur gamdev.net:
 
http://www.gamedev.net/reference/p [...] /page2.asp
 
Un des exemple est le suivant:
 

Code :
  1. float m_fvMatrix[4][4];
  2. [...];
  3. glLoadMatrix( (float*)m_fvMatrix );


 
La signature de la fonction glLoadMatrix etant:
 

Code :
  1. void glLoadMatrixd(GLdouble *m)
  2. void glLoadMatrixf(GLfloat *m)


 
http://www.mevis.de/opengl/glLoadMatrix.html
 
Je me demandais si la ligne :
 

Code :
  1. glLoadMatrix( (float*)m_fvMatrix );


 
pouvait en fait s'ecrire:
 

Code :
  1. glLoadMatrix( m_fvMatrix );


 
En esperant ne pas me faire incendier si c'est une question bete:  
 
Merci ;) !
 
 

mood
Publicité
Posté le 06-07-2006 à 18:17:29  profilanswer
 

n°1402297
skelter
Posté le 06-07-2006 à 20:19:06  profilanswer
 

un tableau (l'identifieur) designe l'adresse de sont premier element et un tableau multidimensionnel est un tableau de tableau, donc le type d'un element de 'float [4][4]' est 'float [4]' et l'adresse d'un tableau 'float [4][4]' est typée 'float (*)[4]'
 
si tu as

Code :
  1. float m_fvMatrix[4][4];


 
tu peux faire

Code :
  1. float (*p)[4] = m_fvMatrix;


 
par contre pour affecter à un 'float *' le cast s'impose car le typage differe, apres c'est a toi de savoir ce que tu fais. glLoadMatrixf attends un pointeur vers une zone memoire représentant 16 float consecutif donc ca ne pose pas de problemes car ca correspond bien a "l'image memoire" d'un 'float [4][4]'

n°1402299
Joel F
Real men use unique_ptr
Posté le 06-07-2006 à 20:21:36  profilanswer
 

apres bon std::vector quoi :o

n°1402300
skelter
Posté le 06-07-2006 à 20:24:08  profilanswer
 

je penses qu'il ya mieux pour une matrice 4x4, voir du coté des bibliotheques mathématiques

n°1402301
Joel F
Real men use unique_ptr
Posté le 06-07-2006 à 20:28:04  profilanswer
 

fixed_array dans boost je crosi ou blitz++ ou ma sig :p

n°1402305
skelter
Posté le 06-07-2006 à 20:38:13  profilanswer
 

ouai, dans boost c'est dans la bibliotheque uBlas

n°1402324
bartleby
Posté le 06-07-2006 à 21:18:59  profilanswer
 

skelter a écrit :

un tableau (l'identifieur) designe l'adresse de sont premier element et un tableau multidimensionnel est un tableau de tableau, donc le type d'un element de 'float [4][4]' est 'float [4]' et l'adresse d'un tableau 'float [4][4]' est typée 'float (*)[4]'
 
si tu as

Code :
  1. float m_fvMatrix[4][4];


 
tu peux faire

Code :
  1. float (*p)[4] = m_fvMatrix;


 
par contre pour affecter à un 'float *' le cast s'impose car le typage differe, apres c'est a toi de savoir ce que tu fais. glLoadMatrixf attends un pointeur vers une zone memoire représentant 16 float consecutif donc ca ne pose pas de problemes car ca correspond bien a "l'image memoire" d'un 'float [4][4]'


 
Merci shelter pour cette reponse qui m'aide beaucoup.
 
Si j'ai compris:
 
m_fvMatrix est un pointeur de type float (*p)[4] quand declare selon mon premier quote.
Mais ma fonction openGL attend un float (*p), d'ou le cast.

n°1402340
skelter
Posté le 06-07-2006 à 21:35:32  profilanswer
 

oui, mais m_fvMatrix n'est pas exactement un pointeur mais une adresse (contenant <-> contenu) qui peut etre contenue par un pointeur float (*p)[4]
comme l'adresse d'une variable elle n'est pas modifiable, par exemple tu ne peux pas faire m_fvMatrix++ (alors qu'avec un pointeur non constant tu pourrais)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Differentes facons de passer un pointeur.....

 

Sujets relatifs
[Javascript/PHP] Récuperer le contenu d'un array et le passer par GETpasser passord à su dans script unix
Passer des parametres dans une fonction JSJe souhaiterai faire des liens souligné au contact du pointeur
Ne pas passer par le navigateur pour ouvrir un pdfAvoir deux styles d'images différentes
[ VB6] [Résolu] Passer un argument a une Macro[abandonné] Aide pour passer au php!
Passer un nom de feuille en variablepasser de 8 octetcs à 1 octet
Plus de sujets relatifs à : Differentes facons de passer un pointeur.....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR