C Valeur, adresse, parametre
Résolu
Chewi-Chew
-
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Nabla's Messages postés 18203 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un petit probleme en C.
Je suis entrain de developper une petite application, malheureusement je ne pourrai pas en dire plus.
Je dois changer les valeur d'une variable local avec l'appel d'une fonction qui en appel d'autre. Je pense que je dois passer ma variable en parametre et affecter les valeurs au niveau des adresse de chaque donnée, mais je me souviens plus de comment on fait !
DATA est le nom d'une grosse structure qui comporte plusieur structure
Data est une variable de type DATA
blabla est une sous structure de DATA
blabla1 est une variable de blabla
int main (void)
{
DATA Data;
Create (Data)
}
//Fonction create
Create (Data)
{
fonction1(Data);
fonction2(Data);
...
}
//Fonction1
fonction1 (Data)
{
data.blabla.blabla1 = 00;
}
Désolé si c'est pas tres clair
Merci d'avance a ceux comprendront et qui pourrons m'aider
PS meme pas la peine de me proposer du C++, car je ne dois pas l'utilisé Uniquement du C.
PS2 Je ne dois pas non plus mettre Data en Variable Globale, ca dois rester local.
J'ai un petit probleme en C.
Je suis entrain de developper une petite application, malheureusement je ne pourrai pas en dire plus.
Je dois changer les valeur d'une variable local avec l'appel d'une fonction qui en appel d'autre. Je pense que je dois passer ma variable en parametre et affecter les valeurs au niveau des adresse de chaque donnée, mais je me souviens plus de comment on fait !
DATA est le nom d'une grosse structure qui comporte plusieur structure
Data est une variable de type DATA
blabla est une sous structure de DATA
blabla1 est une variable de blabla
int main (void)
{
DATA Data;
Create (Data)
}
//Fonction create
Create (Data)
{
fonction1(Data);
fonction2(Data);
...
}
//Fonction1
fonction1 (Data)
{
data.blabla.blabla1 = 00;
}
Désolé si c'est pas tres clair
Merci d'avance a ceux comprendront et qui pourrons m'aider
PS meme pas la peine de me proposer du C++, car je ne dois pas l'utilisé Uniquement du C.
PS2 Je ne dois pas non plus mettre Data en Variable Globale, ca dois rester local.
A voir également:
- C Valeur, adresse, parametre
- Darkino nouvelle adresse - Guide
- Adresse mac - Guide
- Remettre parametre usine pc - Guide
- Parametre dns - Guide
- Adresse url - Guide
5 réponses
ce n'est pas la structure que tu dois passer à ta fonction, mais un pointeur sur la structure. Un pointeur, c'est uen adresse.
pour obtenir le pointeur d'une variable (ou structure), il faut mettre & devant le paramètre...
au lieu de passer un type DATA, tu fera donc passer du DATA*.
au lieu d'y accèder en faisant DATA . variable, tu feras DATA ->variable
cherches les cours sur les pointeurs sur le net
pour obtenir le pointeur d'une variable (ou structure), il faut mettre & devant le paramètre...
au lieu de passer un type DATA, tu fera donc passer du DATA*.
au lieu d'y accèder en faisant DATA . variable, tu feras DATA ->variable
cherches les cours sur les pointeurs sur le net
Merci pour cette reponse rapide
Donc ca donnerai :
int main (void)
{
DATA Data;
Create (&Data)
}
//Fonction create
Create (DATA *Data)
{
fonction1(&Data);
fonction2(&Data);
...
}
//Fonction1
fonction1 (DATA * Data)
{
data->blabla->blabla1 = 00;
}
Donc ca donnerai :
int main (void)
{
DATA Data;
Create (&Data)
}
//Fonction create
Create (DATA *Data)
{
fonction1(&Data);
fonction2(&Data);
...
}
//Fonction1
fonction1 (DATA * Data)
{
data->blabla->blabla1 = 00;
}
//Fonction create
Create (DATA *Data)
{
fonction1(&Data);
fonction2(&Data);
...
}
=> non, ca donne ce qui suit, car tu aura déja un pointeur, donc pas la peine de remettre le &
//Fonction create
Create (DATA *Data)
{
fonction1(Data);
fonction2(Data);
...
}
data->blabla->blabla1 = 00;
=> je sais pas, mais ca m'étonnerai. à mon avis, ce serait plutot
data->blabla.blabla1 = 00;
Create (DATA *Data)
{
fonction1(&Data);
fonction2(&Data);
...
}
=> non, ca donne ce qui suit, car tu aura déja un pointeur, donc pas la peine de remettre le &
//Fonction create
Create (DATA *Data)
{
fonction1(Data);
fonction2(Data);
...
}
data->blabla->blabla1 = 00;
=> je sais pas, mais ca m'étonnerai. à mon avis, ce serait plutot
data->blabla.blabla1 = 00;
Alors j'ai suivi ce que tu m'as dit et voila ce que ça me renvoie :
error C2664: 'Fonction1' : cannot convert parameter 1 from 'DATA*' to 'DATA'
No constructor could take the source type, or constructor overload resolution was ambiguous
error C2664: 'Fonction1' : cannot convert parameter 1 from 'DATA*' to 'DATA'
No constructor could take the source type, or constructor overload resolution was ambiguous
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question