Bonjour tout le monde,
je crée un petit programme en C et j'aimerais savoir, si je crée un tableau: char nom[5][100]; Est-ce que nom[1], nom[2], nom[3], nom[4] et nom[5] seront des pointeurs ?
nom est un pointeur (de type char **) qui pointe sur une liste de pointeur (de type char *) dont chacun pointe sur une liste de caractère (de type char).
Faut faire un dessin avec les cases mémoire pour bien comprendre ;-)
donc tu peut faire:
Code :
char * nom1 = nom[0];
char * nom2 = nom[1];
car pense qu'en C, les index commencent par 0 et pas par 1:
les pointeurs sont nom[0], nom[1], nom[2], nom[3] et nom[4].
hum, ce seront plutot des char nom[], qui sont "defaced" ( il me semble que c'est le terme utilisé) en pointeur.
Techniquement, une matrice (comme dans ton cas le nom) n'est pas un tableau de pointeurs, mais un tableau de tableaux : il ne contiendra pas 4 cases contenant les adresses mémoires des chaines, mais 400 cases, sachant que les adresses des cases 0, 100, 200, 300 et 400 sont les nom[0], nom[1], nom[2] et nom[3].
bluedylc a écrit :
hum, ce seront plutot des char nom[], qui sont "defaced" ( il me semble que c'est le terme utilisé) en pointeur.
Techniquement, une matrice (comme dans ton cas le nom) n'est pas un tableau de pointeurs, mais un tableau de tableaux : il ne contiendra pas 4 cases contenant les adresses mémoires des chaines, mais 400 cases, sachant que les adresses des cases 0, 100, 200, 300 et 400 sont les nom[0], nom[1], nom[2] et nom[3].
Ouais c'est vrai, ce que j'ai dit est inexact concernant le chainage des pointeurs, j'ai perdu l'habitude des tableaux à 2 dimensions constantes ;-)
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.