Bonjour ! J’espère que vous allez bien ! Pour ma part je me pose quelques questions sur les tableaux a plusieurs dimensions :
sur tout les tutos que j'ai vu concernant ces tableaux aucun ne met les * au débuts on ne doit plus en mettre du tout ? ex: int *tableau[5]={0};
j'ai lu sur les cours d'un site qu'on pouvais avoir autant de dimension que l'on voulais mais je ne comprend pas schématiquement comment cela fonctionne ?
et la dernière ; peu-t-on mettre un tableau a deux dimensions dans un structure ?
Merci de m'avoir lu et encore plus de me répondre !
sur tout les tutos que j'ai vu concernant ces tableaux aucun ne met les * au débuts on ne doit plus en mettre du tout ? ex: int *tableau[5]={0};
L'étoile c'est pour accéder à ce que désigne le pointeur. par exemple int *tableau[5]={NULL};c'est un tableau de 5 pointeurs sur des entiers. Pour avoir un tableau de 5 entiers il faut écrire int tableau[5]={0};
Naitchi a écrit:
j'ai lu sur les cours d'un site qu'on pouvais avoir autant de dimension que l'on voulais mais je ne comprend pas schématiquement comment cela fonctionne ?
Il n'y a aucune limitation au nombre de dimensions (mais attention ça consomme de la mémoire) par exemple int tab[2][3][4][12][22][40]; est un tableau de 6 dimensions qui consomme 1 MegaOctet et aucune variable locale ne doit être aussi grosse. Quand on parle de tableaux à plusieurs dimensions il y 2 formes possibles. Par exemple pour 3 dimensions on peut avoir : int tab1[5][10][4]; // en réalité c'est plutôt un tableau de 5 tableaux de 10 tableaux de 4 tableaux d'entiers. int*** tab2; // en réalité c'est plutôt d'un pointeur sur des pointeurs sur des pointeurs sur des entiers. Mais les deux s'utilisent avec la notation : tab[k][j][i] pour accéder à l'élément de position (i,j,k) Les 2 sont souvent appelés sous le nom de tableau à plusieurs dimensions, pourtant il ne faut pas les confondre. La première forme suppose que l'on connait les dimensions en dur. La seconde nécessite de faire des allocations dynamiques.
Naitchi a écrit:
et la dernière ; peu-t-on mettre un tableau a deux dimensions dans un structure ?
Oui, on n'a qu'à utiliser une des 2 formes int tab[5][10]; ou bien int* tab;
int *t[5] déclares un tableau de 5 cases de pointeurs sur int. Pas un tableau de 5 int. Il est nécessaire de faire un malloc() de chaque case du tableau avant de pouvoir y mettre quoi que ce soit. Exemple
Maintenant si tu tiens aux *, tu peux écrire en ligne 20, printf("t[%d][%d]=%3d ",i,j,*(t[i]+j)); ou printf("t[%d][%d]=%3d ",i,j,*(*(t+i)+j));
Pour le nombre de dimensions, je pense qu'il y a une limite (à vérifier dans la norme), mais elle est tellement énorme que cela n'a pas d'importance. Perso, je me vois mal utiliser des tableaux de plus de 3 dimensions. Et je n'en ai jamais utilisé.
oui, on peut mettre un tableau de n'importe quelle dimension dans une structure, et faire des tableaux de structures de n'importe quelle dimension (incluant des tableaux de n'importe quelle dimension, etc, etc, etc).
- Edité par edgarjacobs 15 octobre 2019 à 16:12:26
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
int tab1[5][10][4]; // en réalité c'est plutôt un tableau de 5 tableaux de 10 tableaux de 4 tableaux d'entiers.
int*** tab2; // en réalité c'est plutôt d'un pointeur sur des pointeurs sur des pointeurs sur des entiers.
Pas tout à fait:
int t1[5]; // tableau de 5 int
int t2[5][10]; // tableau de 5 tableaux de 10 int
int t2[5][10][4]; // tableau de 5 tableaux de 10 tableaux de 4 int
int *p1; // pointeur de int
int **p2; // pointeur de pointeur de int
int ***p3; // pointeur de pointeur de pointeur de int
Dans le cas des pointeurs, on remarque qu'il n'y a aucun pluriel. Chaque pointeur peut pointer, ou pas, sur un élément de tableau.
Question tableau a plusieurs dimensions
× 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.
En recherche d'emploi.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Mon site web de jeux SDL2 entre autres : https://www.ant01.fr