Notation pointeur /tableau

Fermé
Marie - 3 déc. 2015 à 20:12
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 - 7 déc. 2015 à 11:00
Bonjour,

voila je suis en train de consulter un programme en C et je me retrouve face à une notation que je n'ai jamais vu jusqu'à présent.


char *fonction(char **str)
int i;

while ((*str)[i]

...



Pouvez-vous me dire à quoi cela correspond le (*str)[i] ?

Merci


2 réponses

jackdada Messages postés 76 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 10 février 2016 19
7 déc. 2015 à 01:17
Le rang i du tableau (*str) se trouvant à l'adresse str.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 816
Modifié par fiddy le 7/12/2015 à 07:49
A l'adresse *str plutôt
0
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 1 043
7 déc. 2015 à 10:52
Salut Marie,

char **str
permet certainement l'accès à un tableau de chaînes C préalablement déclaré et initialisé, dont le pointeur est passé à la fonction.

(*str)[i]
permet d'accéder aux caractères de la première chaîne du tableau de chaînes passé à la fonction et
while ((*str)[i] ...
sera vrai tant que l'index
i
n'est pas sur le caractère de fin de chaîne.


Dal
0
[Dal] Messages postés 6057 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 17 mars 2023 1 043
7 déc. 2015 à 11:00
Par exemple :

#include <stdio.h>

void fonction(const char **str) {
    printf("1st char of the 1st string: %c\n",(*str)[0]);
    printf("1st char of the 2nd string: %c\n",(*(str + 1))[0]);
}

int main(void) {
    const char * array[] = {
        "1. First string",
        "2. Second string",
        "3. Third string"
    };
    fonction(array);

    return 0;
}

donne :

1st char of the 1st string: 1
1st char of the 2nd string: 2

Dal
0