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 :

Différence entre prototypes


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 18
    Par défaut Différence entre prototypes
    Bonjours,

    pouvez vous m'expliquer quelle est la différence entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TYPE   fonction (TYPE   var1, TYPE  var2);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TYPE   fonction (TYPE*   var1, TYPE*  var2);
    avec peut etre n'importe quel type.

    merci d'avance

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 136
    Par défaut
    L'étoile fait référence à la notion de pointeur.
    Ce sont donc deux prototypes différents.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 18
    Par défaut
    Non je parle pas de la notion de pointeur, ce que je veux viser à comprendre c'est la notion de passage par valeur et passage par référence et l'impacte sur la qualité du code!

  4. #4
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Euh ....


    En langage C, passage par adresse ne se fait que par pointeur.


    Passage par copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TYPE   fonction (TYPE   var1, TYPE  var2);
    Passage par adresse grace a des pointeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TYPE   fonction (TYPE*   var1, TYPE*  var2);

    Quand a l'impact sur la qualité du code ... c'est difficile.
    Disons que si tu veux modifier un type primitif, tu passe par adresse, sinon tu passe par copie.

    On pourrai penser que le même raisonnement se tiendrai avec les tableau/structure and Cie.

    Seulement, si la strucutre prend beaucoup de place memoire, la copie va etre longue et donc les performance du programme en prendront un coup.
    Si les performance sont une des priorité, alors le mieux est de passer les structure par pointeur.

    En effet, un pointeur ne vaudrat jamais que 4 octet, c'est insignifiant.

    Le probleme est que si on veut passer une structure mais qu'on en veut pas la modifier, on est un peu coincer.

    La methode pour s'en sortir est de passer la structure par adresse (afin de ne pas penaliser les performance) mais de rajouter le mot clé "const" afin de dire que la structure, meme passer par adresse ne peut etre modifiable.



    Personnelement, j'applique cette regle simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Si la variable est de type primitif (int, char, double ...)
       Si je veux passer sans modifier
           Passage par valeur
       Sinon
           Passage par adresse
    Sinon
       Si je veux passer sans modifier
           Passage par adresse avec le mot clé const
       Sinon
           Passage par adresse

  5. #5
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Le problème ne se pose pas en C, car tous les passages se font par valeur (autrement dit par copie).

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Attention toutefois pour les tableaux, qui sont traîtres là-dessus.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Différence entre pattern closure module et prototype
    Par jibe84 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/10/2013, 09h55
  2. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  3. Différence entre TCP, UDP, ICMP
    Par GliGli dans le forum Développement
    Réponses: 1
    Dernier message: 13/09/2002, 08h25
  4. Différences entre jmp, jz, jnz, etc
    Par christbilale dans le forum Assembleur
    Réponses: 3
    Dernier message: 05/07/2002, 15h09
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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