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 (*address)[2] et char* address[2]?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut différence entre char (*address)[2] et char* address[2]?
    Comme le sujet l'indique, existe-t-il une différence entre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char (*address)[2]
    //et
    char* address[2]
    ? si oui laquelle?

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Oui il sont différent, le premier est un pointeur sun un tableau de 2 charactères (ou si tu préfère, *address est un tableau de 2 charactères), et le second est un tableau de 2 pointeur sur des charactères (ou si tu préfère un tableau de deux char*).

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    Okay et si je veux un tableau de pointeurs sur des chars de taille LENGTH, je fais quoi?
    (c'est à dire sur des chaines de caractères dont je connais la longueur)...

  4. #4
    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 : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par ncheboi Voir le message
    Okay et si je veux un tableau de pointeurs sur des chars de taille LENGTH, je fais quoi?
    (c'est à dire sur des chaines de caractères dont je connais la longueur)...
    Veux-tu vraiment un tableau de pointeurs sur des tableaux de LENGTH char ?
    Un tableau bidimensionnel ne conviendrait-il pas ?

    As tu une raison particulière de ne pas utiliser des vector et des string ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 145
    Par défaut
    Citation Envoyé par gl Voir le message
    Veux-tu vraiment un tableau de pointeurs sur des tableaux de LENGTH char ?
    Un tableau bidimensionnel ne conviendrait-il pas ?

    As tu une raison particulière de ne pas utiliser des vector et des string ?
    J'ai pas le choix du format ... Je dois stocker dans un tableau des char* de longueurs connues...
    On me donne ça comme exemple mais j'ai un peu du mal à comprendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #define ADDRESS_LEN 32
    //...
    char (*addresses)[ADDRESS_LEN];
    addresses = (char (*)[ADDRESS_LEN])malloc(sizeof(char)*ADDRESS_LEN*maxCount);
    //et je le passe ensuite à une fonction comme cela
    int pBinarySearch(char *sortedData, char *keyword, char (*addresses)[ADDRESS_LEN], int maxCount)
    {
    vector <char*> keys;
    //...
    addresses[current_count++] = keys.at(mid);//me dit que "expression must be a modifiable lvalue"
    //...
    }
    Theoriquement, addresses doit contenir (au plus maxCount) char* de taille ADDRESS_LEN chacun... Est-ce que tout ça est juste?

  6. #6
    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 : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par ncheboi Voir le message
    J'ai pas le choix du format ... Je dois stocker dans un tableau des char* de longueurs connues...
    Je réitère, en quoi un tableau bidimensionnel (ou un tableau de tableau si tu le souhaites vraiment) ne convient-il pas ?


    Citation Envoyé par ncheboi Voir le message
    On me donne ça comme exemple mais j'ai un peu du mal à comprendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #define ADDRESS_LEN 32
    //...
    char (*addresses)[ADDRESS_LEN];
    addresses = (char (*)[ADDRESS_LEN])malloc(sizeof(char)*ADDRESS_LEN*maxCount);
    //et je le passe ensuite à une fonction comme cela
    int pBinarySearch(char *sortedData, char *keyword, char (*addresses)[ADDRESS_LEN], int maxCount)
    {
    vector <char*> keys;
    //...
    addresses[current_count++] = keys.at(mid);//me dit que "expression must be a modifiable lvalue"
    //...
    }
    Theoriquement, addresses doit contenir (au plus maxCount) char* de taille ADDRESS_LEN chacun... Est-ce que tout ça est juste?
    Dans le code que tu donnes pour la fonction pBinarySearch(), addresses a simplement besoin d'être un tableau de char*, ce n'est pas lui qui gère la mémoire des éléments pointés par tes char* (puisqu'il existe avant lui). A moins que tu souhaites copier le contenu de la mémoire pointée par ces char* dans addresses et pas seulement leur adresse, mais dans ce cas la ligne addresses[current_count++] = keys.at(mid); est fausse.

    Bref, que cherches-tu précisément à faire ?

    PS : au passage, on est ici sur le forum C++ pas C.

Discussions similaires

  1. Différence entre char &r='c' et char r='c'
    Par deubelte dans le forum C++
    Réponses: 49
    Dernier message: 09/03/2010, 17h50
  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