fonctions void, pointeurs et creations de structurs (en m tps!!) [C++] - C++ - Programmation
Marsh Posté le 06-05-2002 à 14:09:41
Moriaben a écrit a écrit : voilà j'ai un ptit programme qui créé des chaines de structures suivant un fichier txt, il créé et initialise des structures (avec des pointeurs sur la structure suivante) et j'ai un pointeur vers la 1ere structure. enfait j'aimerais mettre ce bout de code en fonction void, mais je sais pas quels parametres rentrer. Est-ce qu'il me suffira de mettre comme parametre le pointeur vers la 1ere structure (avec un & devant pour dire qu'il est modifié) ?? car dans ce sous-programme, il y a création de structures et j'en ai besoin par la suite merci |
heu... tu veux pas essayer d'ê un chouilla + clair !? parce que perso, g rien compris à ce que tu veux faire ! Et je pense pas être le seul
Marsh Posté le 06-05-2002 à 14:17:21
héhé ok je tente
j'ai un pointeur nommé "Pointeur" sur structure (le pointeur est simplement défini, rien d'autre)
je veux lancer un sous programme void(...)
dans ce sous-programme, je crée des structures chainées (des structures qui contiennent un champ "suivant" qui pointe vers la structure suivante) et le pointeur de départ pointe vers la 1ere structure
j'aimerais savoir quels parametres rentrer dans le void. si je rentre le pointeur avec un &, est-ce que ça suffira ? (dans le reste du programme, j'utilise ce pointeur pour accéder aux différentes structures)
si je fais :
void Initialisation(TypPtrStruct & Pointeur)
ça marchera ?
Marsh Posté le 06-05-2002 à 14:27:25
Moriaben a écrit a écrit : héhé ok je tente j'ai un pointeur nommé "Pointeur" sur structure (le pointeur est simplement défini, rien d'autre) je veux lancer un sous programme void(...) dans ce sous-programme, je crée des structures chainées (des structures qui contiennent un champ "suivant" qui pointe vers la structure suivante) et le pointeur de départ pointe vers la 1ere structure j'aimerais savoir quels parametres rentrer dans le void. si je rentre le pointeur avec un &, est-ce que ça suffira ? (dans le reste du programme, j'utilise ce pointeur pour accéder aux différentes structures) si je fais : void Initialisation(TypPtrStruct & Pointeur) ça marchera ? |
Si j'ai bien compris, TypPtrStruct est un type de pointeur sur le type de structure. Si c'est le cas, le proto de ta fonction Initialisation est correcte.
PS : En général, on fait commencer les identifiants par une majuscule seulement pour le nom des classes.
Marsh Posté le 06-05-2002 à 14:31:10
donc à la fin de la fonction, mon pointeur pointera bien vers une structure concrete (qui elle meme pointera vers une structure) ?
Tetragrammaton IHVH a écrit a écrit : Si j'ai bien compris, TypPtrStruct est un type de pointeur sur le type de structure. Si c'est le cas, le proto de ta fonction Initialisation est correcte. PS : En général, on fait commencer les identifiants par une majuscule seulement pour le nom des classes. |
Marsh Posté le 06-05-2002 à 14:33:25
Moriaben a écrit a écrit : héhé ok je tente j'ai un pointeur nommé "Pointeur" sur structure (le pointeur est simplement défini, rien d'autre) je veux lancer un sous programme void(...) dans ce sous-programme, je crée des structures chainées (des structures qui contiennent un champ "suivant" qui pointe vers la structure suivante) et le pointeur de départ pointe vers la 1ere structure j'aimerais savoir quels parametres rentrer dans le void. si je rentre le pointeur avec un &, est-ce que ça suffira ? (dans le reste du programme, j'utilise ce pointeur pour accéder aux différentes structures) si je fais : void Initialisation(TypPtrStruct & Pointeur) ça marchera ? |
La meilleure des choses en programmation, pour savoir si un truc marchera, c d'essayer !
tu veux faire
void Initialisation(TypPtrStruct & Pointeur)
pour la déclaration de ta fonction !?
Marsh Posté le 06-05-2002 à 14:36:53
el_gringo a écrit a écrit : La meilleure des choses en programmation, pour savoir si un truc marchera, c d'essayer ! tu veux faire void Initialisation(TypPtrStruct & Pointeur) pour la déclaration de ta fonction !? |
beh à priori oui, je veux lancer une fonction qui me crée des structures et en dehors de la fonction, si j'utilise "Pointeur" je veux avoir accès à toutes les structs crées pdt la fonction (alors qu'avant la fonction, "Pointeur" ne pointait sur rien du tout)
Marsh Posté le 06-05-2002 à 14:45:21
Moriaben a écrit a écrit : donc à la fin de la fonction, mon pointeur pointera bien vers une structure concrete (qui elle meme pointera vers une structure) ? |
Le '&' que tu mets derriere 'TypPtrStruct' signifie que tu passes la variable 'Pointeur' par référence, c'est à dire que l'appelant peut récuperer une valeur de la variable modifiée par la fonction.
Donc dans ta fonction Initialisation, tu vas faire à un moment donné un truc du style :
Pointeur = pointeur_Vers_Une_Structure_Initialisé;
et le programme qui va appeler la fonction pourra donc récuperer la valeur modifiée par la fonction. Sans le '&', la valeur n'est pas modifiée.
Autre méthode : tu pouvais aussi faire :
TypPtrStruct Initialisation() {
TypPtrStruct monPointeur;
// initialisation de monPointeur
// blabla
return monPointeur;
}
Ca a l'avantage d'être sans ambiguité puisque la valeur retournée est forcement.... une valeur de retour
Marsh Posté le 06-05-2002 à 14:51:32
ok ... donc les structures crées pdt la fonction void ne sont pas supprimées quand cette meme fonction se termine right ?
c'est juste que si y'avait pas le '&', le pointeur n'aurait pas été modifié et donc je n'aurai pas eu accès à ces structures
Marsh Posté le 06-05-2002 à 14:59:25
j'ai un autre probleme maintenant ..
après compilation, j'ai 0 erreurs 0 warnings, mais si je fais un ptit test d'affichage ça affiche rien du tout !!!
Marsh Posté le 06-05-2002 à 15:00:12
Moriaben a écrit a écrit : ok ... donc les structures crées pdt la fonction void ne sont pas supprimées quand cette meme fonction se termine right ? (1) c'est juste que si y'avait pas le '&', le pointeur n'aurait pas été modifié et donc je n'aurai pas eu accès à ces structures (2) |
1 : Ouaip si tu les alloues avec new
2 : Ouaip
[jfdsdjhfuetppo]--Message édité par Tetragrammaton IHVH le 06-05-2002 à 15:02:31--[/jfdsdjhfuetppo]
Marsh Posté le 06-05-2002 à 13:08:02
voilà j'ai un ptit programme qui créé des chaines de structures
suivant un fichier txt, il créé et initialise des structures (avec des pointeurs sur la structure suivante) et j'ai un pointeur vers la 1ere structure. enfait j'aimerais mettre ce bout de code en fonction void, mais je sais pas quels parametres rentrer. Est-ce qu'il me suffira de mettre comme parametre le pointeur vers la 1ere structure (avec un & devant pour dire qu'il est modifié) ?? car dans ce sous-programme, il y a création de structures et j'en ai besoin par la suite
merci