Mouais… Suis pas fan de retourner directement des structures… J'ai tendance à passer par adresse que par valeur, parce que ton truc ne marche plus le jour où tu retournes une grosse structure (enfin si, ça marche, mais c'est lent).
#include <assert.h>
void expmatch (char *s, char **debut, char **motif)
{
assert (debut != NULL);
assert (motif != NULL);
*debut = s;
*motif = s+3;
}
int
main (void)
{
char *debut = NULL;
char *motif = NULL;
/* hop, on passe l'adresse du pointeur plutôt que son contenu */
expmatch ("string", &debut, &motif);
printf ("Chaîne entière : %s\nMotif recherché : %s\n", debut, motif);
return 0;
}
Alors oui, dans le prototype, on voit du pointeur double, mais il ne faut pas avoir peur :)
[^] # Re: Structure
Posté par liberforce (site web personnel, Mastodon) . En réponse au message retourner un pointeur vers un tableau de pointeurs. Évalué à 2.
Mouais… Suis pas fan de retourner directement des structures… J'ai tendance à passer par adresse que par valeur, parce que ton truc ne marche plus le jour où tu retournes une grosse structure (enfin si, ça marche, mais c'est lent).
Alors oui, dans le prototype, on voit du pointeur double, mais il ne faut pas avoir peur :)
Et pour bien comprendre les pointeurs, un petit cours avec Binky:
http://www.youtube.com/watch?gl=FR&hl=fr&v=6pmWojisM_E
Et pour bien lire les déclarations:
http://www.antlr.org/wiki/display/CS652/How+To+Read+C+Declarations
(et comme le lien a l'air un peu cassé:)
http://web.archive.org/web/20090318154941/http://www.antlr.org/wiki/display/CS652/How+To+Read+C+Declarations