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
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
A voir également:
- Adresse de tableau
- Tableau croisé dynamique - Guide
- Darkino nouvelle adresse - Guide
- Rechercher ou entrer l'adresse - Guide
- Adresse mac - Guide
- Tableau ascii - Guide
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
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
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
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
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]
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]
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
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].
T'as un oublié un pointeur.
L'équivalent de tab[x][y] est plutôt : (*tab)[x*8+j].
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
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...)
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...)
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
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é
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é
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
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.
14 avril 2009 à 16:53
char tab [11][9]; ????
14 avril 2009 à 17:03
J'en connais un qui va se faire tirer les oreilles ;-)
14 avril 2009 à 17:08
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].
14 avril 2009 à 18:13
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 ?
14 avril 2009 à 18:23
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]