pointeurs de pointeurs en retour de fonction... [C] - C++ - Programmation
Marsh Posté le 29-04-2003 à 23:55:30
d'après une lecture rapide du code, tu ne devrais pas avoir que ca comme erreurs, tu peux poster les warnings et le erreurs que le compilo te sort ?
[edit] j'ai jeté le code dans mon compilo,
en changeant le prototype de la fonction de
Code :
|
en ça :
Code :
|
ca compile.
maintenant, en changeant ça :
Code :
|
en ça :
Code :
|
c'est un petit peu plus correct (a mon gout) après c'est vous qui voyez.
Marsh Posté le 30-04-2003 à 07:44:26
merci !
mais pour le return je return quoi ? comme j'ai mis ? et dans le main c'est bon aussi mon ptit bout de code ?
merci d'avance !
Marsh Posté le 30-04-2003 à 08:21:32
le return doit être bon,
dans tes boucles for, fais gaffe aux paramètres que tu utilises.
tu es sûr que c'est bon quand tu fais un malloc(nbrePointsA * sizeof(float*) et qu'ensuite tu va jusqu'a nbrePointD dans ton deuxième for ?
Marsh Posté le 30-04-2003 à 10:16:08
dans le 2è malloc en effet je crois que je dois mettre nbPoints et non nbFigures ... j'essaierai en rentrant, je te dis si ça marche
merci de l'observation !!
Marsh Posté le 30-04-2003 à 13:04:24
oki ça marche très bien maintenant...
en fait le premier malloc il définit quelle dimension de mon tableau à 2 dimensions final ? en disant qu'on a tableau[dimension1][dimension2] ...
C'est là où je me suis embrouillé !
Merci de tes réponses !!
Marsh Posté le 30-04-2003 à 13:46:19
Y a un truc que j'aime pas dans ton code, c'est que la mémoire est allouée dans t afonction et qu'elle doit etre liberée à l'exterieur par l'appelant :\
C'est pas très propre
Il vaut mieux faire les malloc, appeler la fonction avec les pointeurs alloués passés en parametre, et liberer après traitement.
Code :
|
Avec juste un code retour d'erreur en retour (parce que là, si ton malloc vautre par exemple tu fais comment ?)
Les malloc et les free correspondants devraient (tant que faire ce peut) toujours etre dans le même bloc de programme. Pour la relecture c'est 50000 fois mieux.
Marsh Posté le 01-05-2003 à 10:05:39
Oui en effet j'avais pensé à faire les malloc dans le main... je vais faire come ç !
Sinon tu saurais répondre à mes ptites questions du message juste avant ?
Merci d'avance !
Marsh Posté le 02-05-2003 à 15:43:01
freeman_78 a écrit : oki ça marche très bien maintenant... |
S'il vous plait une ptite réponse, je suis perdu et je n'arrive pas à bien voir le fonctionnement : est-ce qu'on définit en premier la dimension la plus intérieure ou la plus extérieure ?
merci
on pourrait dire mais je l'ai déjà fait et là dessus y'a pas énormément d'explications ...
Marsh Posté le 02-05-2003 à 17:44:05
Alors si je me souviens bien.... ( c'est le type même de la question piege le coup du [][] )
tab[i][j] = (tab[i])[j]
tab[i] est un int*
(faut raisonner en terme d'operateurs si je ne m'abuse)
d'où :
pour allouer un tableau int test[i][j] :
Code :
|
faut commencer par l'exterieur
mais bon, un petit essai sur un bout de code sera surement plus efficace que ma memoire defaillante ( j'aime paaaaas les tableaux de tableaux )
Marsh Posté le 05-05-2003 à 10:34:37
philou_a7 a écrit : Alors si je me souviens bien.... ( c'est le type même de la question piege le coup du [][] )
|
ben ... Perso, ca me semble correct ...
Marsh Posté le 05-05-2003 à 23:46:05
okioki c'est bien ça
merci à vous pour les réponses !!
pourvu ke ça dure
Marsh Posté le 29-04-2003 à 23:40:09
Bonjour !
Alors voilà, j'ai cette fonction :
et puis dans mon main j'ai :
Le problème c'est que quelque part je fais un truc qui va pas au niveau du return de la première fonction puisque j'ai un warning ... moi je veux retourner l'adresse du pointeur double (l'adresse de mon tableau à 2 dimensions quoi) et la mettre dans "float **coordXcalculs" du main... quelqu'un pourrait-il m'aider ?
D'autre part j'ai une erreur dans la première boucle for, alors si jamais au passage vous voyez ce qui peut clocher dans cette boucle ...
D'avance merci !