les pointeurs - petite aide ! - C++ - Programmation
Marsh Posté le 03-06-2005 à 11:22:03
ReplyMarsh Posté le 03-06-2005 à 11:22:21
int *ptr; // un pointeur vers un int
int **ptr; // un pointeur vers un pointeur vers un int
int ***ptr; // un pointeur vers un pointeur vers un pointeur vers un int
etc...
Marsh Posté le 03-06-2005 à 11:34:55
dans mon ex, j'accede tres simplement aux données fournies en faisant comme ceci :
mon_pointeur[n] ou n va de 0 au nombre de données differentes fournis -1
par contre, mon probleme vient pour remplir la variable de retour. bizarement lorsque je fait :
abcdefgh[0] = 10 ; /* par ex , cela marche je retrouve bien mon 10 pour la premiere donnée*/
abcdefgh[1] = 20 ; /* je ne retrouve pas le 20 pour la 2° donnée */
abcdefgh[2] = 30 ; /* cela passe a la compilation mais genere une exception pdt l'excution */
j'en ai plus ou moin conclus que ca ne marchait pas aussi betement que avec un tableau pourtant cela devrait l'etre tout comme avec la variable d'entrée (provient d'une fonction) *mon_pointeur .
ps : je suis pret par mail a discuter de ce probleme pour ne pas pourrir ce forum avec ma "noobitude"
Marsh Posté le 03-06-2005 à 12:05:47
abcdefgh[1] est un pointeur vers une Ma_Struct2, ça ne peut pas marcher. T'es sûr que c'est pas un tableau bidimensionnel ?
Marsh Posté le 03-06-2005 à 12:15:17
sur ! je peux pas te dire ! ce que je sais c'est que j'ai en effet tester comme ceci :
abcdefgh[0][0] /* par exemple, mais cela pose probleme a la compilation */
voici la structure :
typedef struct OrderItemResponseInq3_IDL {
long positionItem;
long soPositionItem;
Amount_IDL price1;
Amount_IDL price2;
PriceMode_IDL priceMode;
double quantity;
double quantityATP;
BSTR shortText;
BSTR salesUnit;
Material2_IDL alternativeMaterial;
BSTR shortTextAM;
BSTR manufacturerAM;
BSTR usedMaterial;
long inqStatus;
long procStatus;
long messageCode;
BSTR responsePar1;
BSTR responsePar2;
} OrderItemResponseInq3_IDL;
voila la fonction a programmer, du moins les paramatres en entrée et en sortie :
long processInquiry ( OrderHeaderInfo3 orderHeader,
UserData supplierAddress,
UserData customerAddress,
long requestType,
long checkAvailability,
long itemCount,
OrderItem3 *orderItem,
OrderItemResponseInq3 **orderItemResp,
OrderResult2 *orderResult)
**orderItemResp et *orderResult sont les deux parametres de retour.
Marsh Posté le 03-06-2005 à 16:40:25
srs a écrit : sur ! je peux pas te dire ! ce que je sais c'est que j'ai en effet tester comme ceci : |
et comme ça c'est plus claire ?
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int val01;
int val02;
}myStruct;
int callStruct(myStruct **pStruct)
{
myStruct *pStructVal;
pStructVal = *pStruct;
if(pStructVal != NULL)
{
printf("Val1 : %d \tVal2 : %d \n", pStructVal->val01, pStructVal->val02);
}
return 0;
}
int callTest(void)
{
myStruct test;
myStruct* pDatatest;
pDatatest = &test;
test.val01 = 10;
test.val02 = 20;
callStruct(&pDatatest);
return 0;
}
Marsh Posté le 06-06-2005 à 11:11:40
j'ai trouver la soluce.
en me prennant la tete un peu, j'ai chercher comment ils lisaient cette variable a la fin de la fonction et le resultat est :
(*orderItemResp)[n] /* ou n varie suivant le nombre de ligne */
jvous remercie a tous pour les soluces et vous souhaite une bien belle journée !!!
Marsh Posté le 03-06-2005 à 11:19:56
bonjour. comme je l'ai deja di dans un autre post, mes connaissances en C++ sont minimes
Ma_Struct *mon_pointeur /* ca je comprends ce que c'est !! */
Ma_Struct2 **abcdefgh /* la je ne comprend plus */
en tres gros, je dois implementer du code dans un projet existant en utilisant ces 2 variables
*mon_pointeur contient les données a traiter (sous forme de tableau) et **abcdefgh est la variable/pointeur (je sais pas trop ce que c'est) que je dois remplir pour transmettre des valeurs.
est ce que quelqu'un pourrait m'expliquer ce que represente ces 2 *.
merci d'avance !