Notation pointeur /tableau

Marie -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. jackdada Messages postés 91 Statut Membre 19
     
    Le rang i du tableau (*str) se trouvant à l'adresse str.
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      A l'adresse *str plutôt
      0
  2. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      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