tableau en argument de fonction et pointeur de pointeur - C - Programmation
Marsh Posté le 08-08-2008 à 16:11:50
ReplyMarsh Posté le 08-08-2008 à 16:20:17
Je@nb a écrit : Il te faudrait je pense commencer par lire un cours de C. |
??? je ne pense pas que l'utilisation des pointeurs de pointeurs soient à ce point évidente... ce que j'avais codé au départ, c'est quelque chose comme ça:
void Fprinc ( float *Tableau )
{
// ici j'appelle une fonction interne qui va faire des calculs sur mes éléments de tableau
f_calc ( Tableau );
}
void f_calc ( float *Tableau )
{
for (i=0;i<Dim; i++) Tableau[i] = blalab;
}
ensuite, mon programme principal ressemblait à ça:
void F_Util ()
{
float Tableau[Dim];
Fprinc ( float Tableau[Dim] );
// ici, faire un print des éléments du tableau montre qu'ils n'ont pas été affectés des valeurs données dans f_calc
}
A ce stade, j'ai cru comprendre que justement, ce passage d'argument ne permettait pas de récupérer les valeurs du tableau. On m'a parlé des pointeurs de pointeurs, et après un grand nombre d'essai, je n'arrive pas à les mettre en oeuvre... maintenant, si ma question est excessivement conne, je veux bien qu'on me le dise. Merci d'avance
Marsh Posté le 08-08-2008 à 16:23:06
Un pointeur de pointeur n'est rien d'autre qu'un pointeur sur quelque chose (entre autre ici un pointeur). Si tu as compris les pointeurs tu comprends les pointeurs de pointeurs ou les pointeurs de pointeurs de pointeurs etc.
Si tu ne comprends pas, lis/prends un cours sur le C, tu trouveras toutes les infos dedans.
Marsh Posté le 08-08-2008 à 17:14:04
Tipi470 a écrit : |
quadn je lis oui je pense que tu as droit de revoir ton cours de C
Marsh Posté le 09-08-2008 à 16:40:17
Passe directement ton tableau comme l'a montré Joel. Les tableaux sont toujours passés par référence, donc tu n'as rien de spécial à faire. Les seuls trucs qui sont passés pas valeur sont les types de base (int, long, double...) et les structures.
Marsh Posté le 09-08-2008 à 18:36:51
matafan a écrit : Passe directement ton tableau comme l'a montré Joel. Les tableaux sont toujours passés par référence, donc tu n'as rien de spécial à faire. Les seuls trucs qui sont passés pas valeur sont les types de base (int, long, double...) et les structures. |
TOUT est passé par valeur, quand c'est un pointeur, c'est la valeur du pointeur qui est passée, soit l'adresse du tableau pointé...
Marsh Posté le 09-08-2008 à 22:37:13
Certes, mais je crois que tout le monde à compris ce que je voulais dire...
Marsh Posté le 08-08-2008 à 15:48:26
Bonjour,
j'ai une fonction principale Fprinc qui a pour argument un tableau de 20 float par exemple.
Ce tableau est modifié par une autre fonction appelée à l'intérieur de ma fonction principale. Je veux avoir accès aux valeurs des éléments du tableau depuis un autre programme qui va appeler Fprinc.
On m'a expliqé au sujet des arguments d'une fonction que ce n'était pas la peine d'utiliser des pointeurs sur des arguments non modifiés, par contre, il faut que j'utilise des pointeurs lorsque je souhaite modifier une variable passée en argument d'une fonction. Et on m'a dit que dans le cas de tableaux, il fallait utiliser un pointeur de pointeur...
est-ce que quelqu'un pourrait m'expliquer à quoi ça ressemble la syntaxe de pointeur de pointeur dans le cas d'un tableau à modifier, passé en argument d'une fonction ? entre les **, les *, les &, je suis perdue... aussi bien dans l'appel de la fonction, que dans la définition des sous fonctions, que dans l'affectation de nouvelles valeurs aux éléments du tableau.
Je précise que j'ai pas mal planché dessus... j'ai essayé des choses comme (**Tableau), avec ou sans parenthèses, avec ou sans la taille du tableau... je pense qu'il me faut surtout un exemple très concret, avec appel d'une fonction, sa définition, son prototype, qui pourrait me faire récupérer la valeur des éléments du tableau.
merci d'avance
Message édité par Tipi470 le 08-08-2008 à 16:04:33