IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

signification dans le code


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 63
    Points
    63
    Par défaut signification dans le code
    bonsoir,
    je débute en POO, et je ne comprends pas à quoi correspond certaines instructions dans deux programmes, après avoir cherché je me décide à poster un message!!! Si quelqu'un peut m'aider ça serait sympa :

    tout d'abord la structure est comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct {
    	int icode;
    	int ialt;
    	int icap;
    	int iprofil;
    	int iinclinaison;
    	int iautonomie;
    	int ietat;
    } Avion;
    ensuite j'ai plusieurs fonctions dont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void SaisieAvion (Avion & avion) 
    void AfficheAvion (Avion & avion)
    et donc ma question qui est peut être toute simple :
    à quoi correspond "& avion" dans les arguments, je sais que Avion est la variable structurée mais le reste je comprends pas...

    ------------------

    et ensuite dans un autre programme, c'est toujours le même style de problème que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct {
    	int stock;
    	float prix;
    	int ventes [NMOIS];
    }enreg;
    et mes fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void raz (enreg & enr)
    void raz2 (enreg *enr)
    donc la je comprends encore pas à quoi correspond "enreg & enr" et en plus maintenant ce que veut dire "enreg * enr"

    et dans le programme principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int main(){
    enreg enr;
    et ici pourquoi on marque "enreg enr;" et à quoi ça correspond?

    merci de me répondre si jamais ça vous parle

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 923
    Points : 220 590
    Points
    220 590
    Billets dans le blog
    128
    Par défaut
    Bonjour,

    Je vous conseille la lecture de ceci: http://cpp.developpez.com/faq/cpp/in...TION_reference
    (Si ce n'est pas d'un court entier)

    Sinon, la ligne
    Correspond à la déclaration d'une variable de type enreg (la structure donc) et ayant pour nom 'enr'.

    Note:
    Sur ce forum, il existe une balise spéciale pour la mise en page du code. Celle ci est accessible soit en utilisant le bouton '#' lors de l'édition d'un message, soit en tapent [ code ] et [ /code ] autour du code (sans les espaces)

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour et bienvenu,
    Je suis surpris que ces points n'aient pas encore été abordés dans le cours que tu suis.
    Lorsqu'on appelle une fonction avec un argument, on a trois possibilités sur la façon dont l'argument est transmis à la fonction :
    -> passage par valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void SaisieAvion (Avion avion);
    int main()
    {
       Avion av;
       SaisieAvion(av);
       return 0;
    }
    Dans le cas du passage par valeur, une copie de la variable de l'appelant est réalisée et transmise à la fonction. La modification de la copie à l'intérieur de la fonction SaisieAvion n'a aucun impact sur l'argument transmis dans l'appelant (av).

    -> passage par pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void SaisieAvion (Avion *avion);
    int main()
    {
       Avion av;
       SaisieAvion(&av);
       return 0;
    }
    Ici pas de copie de l'objet av mais passage de sont pointeur. Le pointeur contient l'adresse de l'objet transmis. Par conséquent avion dans la fonction désigne le même objet que av dans l'appelant. Toute modification dans la fonction SaisieAvion se fait donc sur la variable de l'appelant.
    Un pointeur peut être NULL, c'est à dire une valeur particulière indiquant qu'il ne désigne pas un objet valide. Essayer de le 'déréférencer', c'est à dire d'utiliser la valeur qu'il pointe est alors une erreur.

    -> passage par référence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void SaisieAvion (Avion &avion);
    int main()
    {
       Avion av;
       SaisieAvion(av);
       return 0;
    }
    Le passage par référence permet aussi de ne pas faire de copie de l'argument et de passer à la fonction une lien vers l'objet de l'appelant. Tout comme avec un pointeur, la modification dans la fonction impacte la variable de l'appelant puisque la référence permet de lier le paramètre à la variable et n'en fait pas une copie. Contrairement à un pointeur, une référence est toujours valide (sauf construction alambiquée relevant de la faute professionnelle ). C'est entre autre pour cela que l'on préfère ce type de passage lorsqu'on ne souhaite pas un passage par valeur.

    A noter, lorsque la copie est couteuse (objet volumineux par exemple), le passage par valeur peut être inapproprié. On peut choisir un passage par référence et pour empêcher la fonction de modifier l'objet, on utilise la constance. Ça me semble un passage probable pour ta fonction d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void AfficheAvion (Avion const & avion)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 63
    Points
    63
    Par défaut
    Merci bcp pour votre aide j'y vois un peu plus clair.
    Si ces points n'ont pas été vu, c est pcq je viens de reprendre mes études, et donc normalement j'aurais du le voir les années précedente sauf, qu'à l'époque ce module ne se faisait pas, donc le prof considère qu'on a tous les bases meme si ce n'est pas vraiment le cas...

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    En ce cas, il ne faut pas hésiter à revenir poser des questions .
    Permets-moi de te conseiller ce petit guide pour démarrer l'apprentissage du C++ : Comment débuter en C++ ? par notre ami Alp Mestan

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Signification de '#' dans un code Forms/PLSQL
    Par h472009 dans le forum Forms
    Réponses: 4
    Dernier message: 06/07/2012, 17h35
  2. Signification des trois points dans un code
    Par deubelte dans le forum Débuter
    Réponses: 5
    Dernier message: 19/03/2010, 16h45
  3. signification du << dans un code java
    Par safa baccouche dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 13/09/2009, 20h25
  4. Modifier un événement dans le code
    Par HT dans le forum Langage
    Réponses: 6
    Dernier message: 20/06/2003, 10h46
  5. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 11h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo