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 char ** environ et char * environ[]


Sujet :

C

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 8
    Points
    8
    Par défaut Différence entre char ** environ et char * environ[]
    Bonjour,

    j'arrive pas à faire la différence entre deux expressions que je considère comme équivalente.
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern char * environ[]
    Malheureusement, lors de la compilation, chacune me demande un résultat différent. La première expression me semble la plus correcte, mais ce qui me gène c'est que ma tête persiste à dire que c'est la même chose
    Y'a-t-il peut être quelqu'un qui peut m'aider ?

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Ce n'est pas du tout la même chose :
    est un pointeur : un objet qui stocke l'adresse d'un objet, ce objet étant lui-même ici un objet pointeur sur char
    est un objet tableau. Chaque élément du tableau est ici un pointeur sur char.

    La confusion vient d'un apprentissage approximatif du C :
    Si environ est un tableau, alors sauf lorsqu'il est associé aux opérateurs unaires sizeof et & (adresse de), l'identificateur environ représente une valeur qui est l'adresse du premier élément du tableau. Si c'est un tableau de pointeur sur char, alors cette valeur est du type char **.

    Exemples : char * environ[5];

    - sizeof environ : environ désigne un tableau. Résultat 5*sizeof (char*)
    - & environ : environ désigne un tableau. Le résultat est du type adresse d'un tableau de 5 pointeurs sur char : char* (*)[5]

    Dans les cas suivants, environ n'est plus un objet mais une valeur de type char ** :

    f(environ) // en argument d'une fonction
    environ +1 // dans une opération
    sizeof (environ+0)
    *environ
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/01/2014, 00h04
  2. différence entre char a[20]="str" et char *a="str"
    Par iBen68 dans le forum Débuter
    Réponses: 4
    Dernier message: 31/10/2009, 03h22
  3. différence entre int et char
    Par hassiba_45 dans le forum C++
    Réponses: 4
    Dernier message: 12/06/2008, 21h53
  4. [Free Pascal] Mini-tutoriel : Différence entre char et chr (auto-analyse de code)
    Par Clandestino dans le forum Free Pascal
    Réponses: 14
    Dernier message: 24/03/2007, 18h18

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