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 entre Masub(char * chaine) et Masub(char chaine[])


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut Diff entre Masub(char * chaine) et Masub(char chaine[])
    Bonjour,
    Je suis nouvelle sur ce forum, je hante habituellement le forum visual Basic (chacun ses vices ).
    Je voudrais savoir si il y a une différence entre les deux déclarations suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Masub(char *chaine)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Masub(char chaine[])
    Je travaille sur une application qui utilise cette dernière notation, et je ne voudrais pas mal interpréter le code existant.
    Merci de votre aide.
    Cordialement

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Re: Diff entre Masub(char * chaine) et Masub(char chaine[])
    Citation Envoyé par soazig
    Bonjour,
    Je suis nouvelle sur ce forum, je hante habituellement le forum visual Basic (chacun ses vices ).
    Je voudrais savoir si il y a une différence entre les deux déclarations suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Masub(char *chaine)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Masub(char chaine[])
    Je travaille sur une application qui utilise cette dernière notation, et je ne voudrais pas mal interpréter le code existant.
    Merci de votre aide.
    Cordialement
    à mon avis c'est kif-kif.

    marvinrouge

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    c'est identiquement la meme chose tu transferes de toute facon l'adresse du debut du pointeur
    - les bonnes idees c'est tres rare, ayez en quelques unes et faites en profiter les autres...
    - L'imagination est plus importante que le savoir...

  4. #4
    Bob
    Bob est déconnecté
    Membre averti
    Avatar de Bob
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 378
    Points
    378
    Par défaut
    Si tu as le choix, tu devrais preferer la 1ere notation, c'est la plus courante a mon avis...
    Bob, Rédacteur C/C++ & PHP
    http://bob.developpez.com/

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Merci à tous, vous avez tous l'air d'accord, donc les deux notations sont équivalentes.
    Pour Bob
    En principe j'utilise la notation char * mais comme c'est de la modification de l'existant je vais pas tout casser.

    A+

  6. #6
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Citation Envoyé par soazig
    Merci à tous, vous avez tous l'air d'accord, donc les deux notations sont équivalentes.
    Sauf que gcc (compilateur réputé ) n'est pas d'accord dans tous les cas, lui...
    Dans ton cas, le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void Masub(char *chaine)
    est bien équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void Masub(char chaine[])
    Mais si tu essaie de faire quelque chose de ce genre, on a les erreurs indiquées en commentaire (ce qui est normal!):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int main(void){
    char*ch1;
    char ch2[];  /*array size missing in `ch2'*/
     
    ch1=malloc(10);
    strcpy(ch1,"bonjour1");
    ch2=malloc(10); /*incompatible types in assignment */
    strcpy(ch2,"bonjour2");
    printf("%s\n%s\n",ch1,ch2);
    return 0;
    }
    Moralité: les 2 notations ne sont pas strictement équivalentes

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par joellel
    Citation Envoyé par soazig
    Merci à tous, vous avez tous l'air d'accord, donc les deux notations sont équivalentes.
    Sauf que gcc (compilateur réputé ) n'est pas d'accord dans tous les cas, lui...
    Dans ton cas, le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void Masub(char *chaine)
    est bien équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void Masub(char chaine[])
    Les notations equivalente sont void Masub(char *chaine) et void Masub(char chaine[]). Personne n'a jamais dit que char *chaine et char chaine[] etaient equivalents.

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

Discussions similaires

  1. difference entre deux chaines de caractères char*
    Par mandrain dans le forum Débuter
    Réponses: 2
    Dernier message: 12/06/2014, 18h51
  2. extraire une sous chaine d'un char*
    Par john123 dans le forum C
    Réponses: 7
    Dernier message: 13/10/2007, 00h20
  3. Impression chaine de caractères char*
    Par squad dans le forum C++
    Réponses: 2
    Dernier message: 17/05/2006, 16h01
  4. Réponses: 4
    Dernier message: 13/02/2006, 11h34
  5. Réponses: 2
    Dernier message: 01/07/2004, 11h36

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