Adresse de tableau

Résolu/Fermé
Nanard - 14 avril 2009 à 13:57
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 avril 2009 à 12:39
Bonjour,
je déclare un tableau en c de ce type char tab[11][8];

sauf que l'adresse de tab[1][0] et tab[0][8] sont les même ansci que tab[2][0] et tab[1][8]etc...

quelqu'un serait t'il d'ou vien le probleme ????
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 avril 2009 à 15:21
Salut,
quelqu'un serait t'il d'ou vien le probleme ????
Il n'y a en a pas ;-)).

tab[i][j] est l'expression allégée de *(*(tab+i)+j)
En C, les tableaux sont représentés linéairement en mémoire.
Puisque le tableau à une taille de 11 par 8, incrémenter j de 8, revient à augmenter i de 1.
Ainsi, tab[1][0] = *(*(tab+1)+0)= *(*(tab+1-1)+0+8) = *(*(tab+0)+8) = tab[8][0].

Cdlt
1
ok ok merci tout le monde donc si je veux un tableau de 9 case par douze je doit déclarer mon tableau comme ca :

char tab [11][9]; ????
0
loupius > Nanard
14 avril 2009 à 17:03
mdr
J'en connais un qui va se faire tirer les oreilles ;-)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > Nanard
14 avril 2009 à 17:08
je veux un tableau de 9 case par douze
Si tu veux un tableau de 9 lignes et 12 colonnes : char tab[9][12].
Si tu veux un tableau de 12 lignes et 9 colonnes : char tab[12][9].
0
Nanard > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
14 avril 2009 à 18:13
oula oula elle sont tout rouge mes oreil
je vais allez assayer tout ca

mais portant si on veu un tableau de 15 variable on déclare "tab [14]" vu que ya tab [0] non ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > Nanard
14 avril 2009 à 18:23
Oula oula elle sont tout rouge mes oreil
Et elles vont rougir encore ;-))).

mais portant si on veu un tableau de 15 variable on déclare "tab [14]" vu que ya tab [0] non ?
Si tu veux un tableau de 15 cases, il faut déclarer tab[15]. La première case sera tab[0] et la quinzième (la dernière) sera tab[14]
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
14 avril 2009 à 14:14
Oui, de toi ;)
tab[N] est un tableau dont les cases vont de tab[0] à tab[N-1], ce qui fait que tab[N] n'existe pas !
Dans ton cas, c'est pareil, tu défini tab[11][8], donc tab[x][8] n'existe pas.
Bon, ensuite, il faut savoir que les tableaux 2D ne le sont pas dans les faits : toutes les cases sont les unes à coté des autres.
Donc tab[x][y] est équivalant à tab[x*8+y]
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 avril 2009 à 15:04
Donc tab[x][y] est équivalant à tab[x*8+y]
T'as un oublié un pointeur.
L'équivalent de tab[x][y] est plutôt : (*tab)[x*8+j].
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
14 avril 2009 à 15:10
C'est pour ça que j'ai dit équivalent, et pas égale ;) :p
Je voulais juste souligner le fait qu'il y avait une opération cachée et une continuité des casses en mémoire.
Et comme tab est un tableau, je ne voulais pas trop m'avancer sur la gestion en pointeur :p (je ne saurait dire si il avait fallu mettre *(tab[x*8+y]) ou (*tab)[x*8+y] ou autre...)
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
15 avril 2009 à 08:21
Oui, il y a du tirage d'oreille ! surtout que je t'ai expliqué dans mon message que ça allait de 0 à N-1 un tableau !
Par contre, fiddy, je ne suis pas trop d'accord avec toi sur ligne et colonne. Il y a la première dimension et la deuxième dimension, mais rien ne dit si la première doit être ligne ou colonne. ça dépend du standard adopté
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
15 avril 2009 à 12:39
Effectivement. Dans la mesure où la notion de tableaux n'existe pas dans la mémoire, il n'y a que des conventions. Même si la convention Ligne Colonne est plus répandue, il est bon de rappeler que ce n'est qu'une convention.
0