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 :

Création d'un pointeur char


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut Création d'un pointeur char
    Est-ce que j'ai le droit de créer un pointeur char de cette manière ?



    ou est-ce que je dois absolument éviter de mettre les crochets et le 15 comme si c'était une variable tableau classique ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Cela dépend de ce que tu entends faire avec cette ligne

    char *nom[15]; déclare un tableau de 15 pointeurs. Chaque nom[i] est un char*.

    Si c'est un pointeur sur un tableau de char tab[15] que tu veux faire, il te faut rajouter des parenthèses : char (*nom)[15];.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2014
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Novembre 2014
    Messages : 367
    Points : 9
    Points
    9
    Par défaut
    Mais un pointeur de type char n'est-il pas également un tableau par définition ? Par exemple dans char *mot je peux insérer une chaîne de caractère comme si c'était un tableau comme ceci char mot[15].

  4. #4
    Invité
    Invité(e)
    Par défaut
    Par définition : non. Ce n'est rien de plus que l'adresse d'un char.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char c = 'a';
    char *p = &c;
    p pointe vers l'adresse du seul caractère 'a', aucune notion de tableau ici.

    Mais potentiellement oui, dès lors que cette adresse est celle d'un tableau


    Mais attention dans ces deux derniers points, on parle de tableau de char, alors que
    • char *noms[15]; (devrait-on l'écrire avec un « s » à la fin puisqu'il s'agit de 15 fois un pointeur char *nom; ) est un tableau de char* ;
    • char (*nom)[15]; est un pointeur vers un tableau de 15 char.

    Un exemple pour appréhender un peu les divers éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <stdio.h>
     
    void pointeur_tableau(char (*phello)[15]) {
        printf("pointeur_tableau : %s\n", (*phello));      // On déférence le pointeur pour accéder au tableau
        printf("6e char du tableau : %c\n", (*phello)[6]); // 6e caractère du tableau (parenthèses essentielles, sinon
                                                           // on tente d'accéder au premier caractère du 6e tableau ! de
                                                           // 15 char à partir de l'adresse de « hello » passée
    }
     
    int main(void) {
        char hello[15] = "Hello World"; // Tableau contenant la chaine "Hello World"
        char *p = hello + 3; // Pointe vers l'adresse de la troisième lettre 'l'
        char *tab[2] = {
            hello,     // Le premier élément pointe vers l'adresse de la première lettre 'H'
            hello + 6  // Le second élément pointe vers l'adresse de la sixième lettre 'W'
        };
     
        pointeur_tableau(&hello); // remarque que je passe l'adresse de « hello »
        printf("p : %s\n", p);           // lo World
        printf("tab[0] : %s\n", tab[0]); // Hello World
        printf("tab[1] : %s\n", tab[1]); // World
        return 0;
    }

Discussions similaires

  1. Causez-moi des pointeurs char* toto ou char *toto
    Par dva2tlse dans le forum Linux
    Réponses: 11
    Dernier message: 20/08/2008, 14h27
  2. Aide sur les pointeurs + char
    Par Deejoh dans le forum Débuter
    Réponses: 13
    Dernier message: 18/09/2007, 12h55
  3. Réponses: 4
    Dernier message: 16/11/2006, 02h10
  4. création d'un pointeur
    Par morrison29 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 15/11/2006, 17h57
  5. [Debutant]Tableau de pointeur char (char *)
    Par nephhh dans le forum Débuter
    Réponses: 8
    Dernier message: 03/11/2006, 00h48

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