Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

passage d'adresse de structure

4 réponses
Avatar
Nicolas Aunai
j'ai une fonction qui prend un pointeur sur une structure de type :

struct s{

struct s1;
int a;

}

ma fonction est donc définie ainsi :

int fonction(struct s *s_p);

a l'intérieur de cette fonction, j'ai un appel d'une seconde fonction
qui elle, prend un pointeur sur la structure s1 de la structure s
pointee par s_p.

cependant j'arrive pas trop a voir ce que je dois lui filer comme
argument.
en effet, si je sais que pour attendre un membre de s je dois faire
s_p->membre, comment passer l'adresse de s1 ?

est-ce s_p->&s1 ?

merci


--
Nico,
http://astrosurf.com/nicoastro

4 réponses

Avatar
Yves ROMAN

j'ai une fonction qui prend un pointeur sur une structure de type :
struct s{
struct s1;
int a;
}
ma fonction est donc définie ainsi :
int fonction(struct s *s_p);
a l'intérieur de cette fonction, j'ai un appel d'une seconde fonction
qui elle, prend un pointeur sur la structure s1 de la structure s
pointee par s_p.
cependant j'arrive pas trop a voir ce que je dois lui filer comme
argument.
en effet, si je sais que pour attendre un membre de s je dois faire
s_p->membre, comment passer l'adresse de s1 ?

est-ce s_p->&s1 ?



Non: tout simplement &s_p->s1

Avatar
Bertrand Mollinier Toublet
Nicolas Aunai wrote:
j'ai une fonction qui prend un pointeur sur une structure de type :

struct s{

struct s1;
int a;

}

Ca m'etonnerait que ton compilateur accepte la definition precedente...

Tu as sans doute du vouloir dire:

struct s
{
struct s1 b;
int a;
};

(Note le nom du membre de s de type struct s1, et note le ; a la fin de
la definition de struct s)...

ma fonction est donc définie ainsi :

int fonction(struct s *s_p);

a l'intérieur de cette fonction, j'ai un appel d'une seconde fonction
qui elle, prend un pointeur sur la structure s1 de la structure s
pointee par s_p.

Moui, alors etant donne


int foo(struct s *sp);
et
int bar(struct s1 *s1p);

tu veux:

int foo(struct s *sp)
{
bar(&sp->b);
}


--
Bertrand Mollinier Toublet
"In regard to Ducatis vs. women, it has been said: 'One is a sexy thing
that you've just got to ride, even if it breaks down a lot, costs a lot
of money, and will probably try to kill you'. However, nowadays I can't
seem to remember which one is which." -- Peer Landa

Avatar
Bertrand Mollinier Toublet
Nicolas Aunai wrote:
j'ai une fonction qui prend un pointeur sur une structure de type :

struct s{

struct s1;
int a;

}

Ca m'etonnerait que ton compilateur accepte la definition precedente...

Tu as sans doute du vouloir dire:

struct s
{
struct s1 b;
int a;
};

(Note le nom du membre de s de type struct s1, et note le ; a la fin de
la definition de struct s)...

ma fonction est donc définie ainsi :

int fonction(struct s *s_p);

a l'intérieur de cette fonction, j'ai un appel d'une seconde fonction
qui elle, prend un pointeur sur la structure s1 de la structure s
pointee par s_p.

Moui, alors etant donne


int foo(struct s *sp);
et
int bar(struct s1 *s1p);

tu veux:

int foo(struct s *sp)
{
bar(&sp->b);
}


--
Bertrand Mollinier Toublet
"In regard to Ducatis vs. women, it has been said: 'One is a sexy thing
that you've just got to ride, even if it breaks down a lot, costs a lot
of money, and will probably try to kill you'. However, nowadays I can't
seem to remember which one is which." -- Peer Landa

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Nicolas Aunai @free.fr> wrote:

j'ai une fonction qui prend un pointeur sur une structure de type :

struct s{

struct s1;


Pas du C. Il manque un tag ou un type.

int a;

}

ma fonction est donc définie ainsi :

int fonction(struct s *s_p);

a l'intérieur de cette fonction, j'ai un appel d'une seconde fonction
qui elle, prend un pointeur sur la structure s1 de la structure s
pointee par s_p.

cependant j'arrive pas trop a voir ce que je dois lui filer comme
argument.
en effet, si je sais que pour attendre un membre de s je dois faire
s_p->membre, comment passer l'adresse de s1 ?

est-ce s_p->&s1 ?


Non. En admettant que la structure 's1' soit correctement définie:

's_p->s1' est l'élément. Son adresse est donc:

'&s_p->s1'

Finalement, c'est simple le C...

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/