Comment remplis tu ton tableau?
as tu fait un printf de ton tableau?
un char ne se teste pas a NULL mais à '\0'
Si tu testes une seul char (pas une chaine quoi!)alors c'est infod[i*5][0][0]
** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
Ton tableau est à 3 dimensions, donc infod[a][b] est un pointeur sur un tableau de 1024 octets, puisque c'est un tableau de char . Le tableau ayant été déclaré, les pointeurs du type infod[a][b] sont a priori non NULL (sauf si ta mémoire est saturée, ce qui est peu probable, à moins que tu aies d'autres programmes ultra voraces qui tournent en même temps.
Ton tableau est à 3 dimensions, donc infod[a][b] est un pointeur sur un tableau de 1024 octets, puisque c'est un tableau de char.
Pas exactement.
L'objetinfod[a][b]est un tableau de 1024 char.
Et, sauf exception, l'expressioninfod[a][b] est automatiquement convertie en un pointeur de char (et pas un pointeur de tableau) sur le char initial du tableau de 1024 char.
Non, je crois que c'est bien un tableau. Pas d'ordi sous la main, mais je pense qu'en prenant son adresse on peut le passer comme *(char[1024]) à une fonction.
EDIT: charinfod[200][12][1024]; défini un tableau de 200 tableaux de 12 tableaux de 1024 char. Donc, infod est un tableau de tableaux de tableaux de char. infod[1] est un tableau de tableaux de char. infod[1][1] est un tableau de char. infod[1][1][1] est un char.
C'est simple finalement.
Bonjour à tous,
Je me suis mal exprimé (l'informatique demande à être précis et rigoureux), infod[a][b] est bien un pointeur sur un caractère qui est le premier (indice 0) d'un tableau de 1024 caractères, ce que j'avais un peu trop réduit.
Bonne continuation à malfrax et à tous ses aides.
Tout dépend de ce que tu appelles pointeur. Dans le microprocesseur, les tableaux n'existent pas. Les tableaux sont donc tous des pointeurs, une fois compilés. Ce qui nous intéresse, c'est ce que ça représente dans l'abstraction du langage. Dans cette abstraction, infod[a][b] est un TABLEAU de 1024 caractères, qui peut bien sûr être casté implicitement en pointeur, comme tous les tableaux.
Donc pour ce qu'on appelle pointeur, seule la norme C compte.
Citation : C99 §6.2.5.20
A pointer type may be derived from a function type, an object type, or an incomplete type, called the referenced type. A pointer type describes an object whose value provides a reference to an entity of the referenced type. A pointer type derived from the referenced type T is sometimes called ‘‘pointer to T’’.
Et pour les tableaux :
Citation : C99 §6.2.5.20
An array type describes a contiguously allocated nonempty set of objects with a particular member object type, called the element type. Array types are characterized by their element type and by the number of elements in the array. An array type is said to be derived from its element type, and if its element type is T, the array type is sometimes called ‘‘array of T’’.
On est d'accord. Il ne faut pas confondre ce qui peut se passer au niveau de l'ordinateur, et au niveau du langage, parce que ça n'a rien a voir.
Problème avec un char[][][]
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.