Bonjour,
Je reviens vers vous avec une question sur les paramètres à envoyé a une fonction pour la création dynamique d'un tableau a 2 dimensions.
Je comprend lorsque je veux passer le paramètre d'un tableau a une dimension..
Pour un tableau a une dimension
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 int main(int argc, char *argv[]) { int *ptTab = NULL; size_t dTailleTab = 10; Fct_creationTab(&ptTab, dTailleTab); } void Fct_creationTab(int **pptTab, size_t dTailleTab) { *pptTab = malloc(dTailleTab * sizeof(int)); for (i = 0; i < dTailleTab; i++) { (*pptTab)[i] = 1 + i; } }
Je comprend aussi le code pour faire un tableau à 2 dimensions directement dans le main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 int main(int argc, char *argv[]) { // ======================================================================================================= // VARIABLE(S) LOCALE // ======================================================================================================= int **tDamier = NULL; size_t size_Damier = 10; int i, j; // ======================================================================================================= // CODE MAIN // ======================================================================================================= printf("Entrer la taille du damier de jeux : "); scanf("%d", &size_Damier); tDamier = malloc(size_Damier * sizeof(int)); if (tDamier == NULL) { printf("Echec de l'allocation\n"); return EXIT_FAILURE; } for (i = 0; i < size_Damier; i++) { tDamier[i] = malloc(size_Damier * sizeof(int)); if (tDamier[i] == NULL) { printf("Echec de l'allocation\n"); for (i = 0; i >= 0; i--) { free(tDamier[i]); } free(tDamier); return EXIT_FAILURE; } } for (i = 0; i < size_Damier; i++) { for (j = 0; j < size_Damier; j++) { tDamier[i][j] = j + 1; printf("tDamier[%d][%d] = %d\n",i, j, tDamier[i][j]); } } for (i = 0; i >= 0; i--) { free(tDamier[i]); } free(tDamier); return 0; }
mais je bloque complètement sur le comment faire pour un tableau a 2 dimensions..
Je m'y perd dans mes pointeurs, le nombre d’étoiles que je dois utiliser.. brefs..
J'ai beau lire les pdf du cours, ou les tutos que je trouve ici ou ailleurs.. je ne trouve pas vraiment de réponses a mes questions..
Edit:
Un ami vient de me passer comment faire un return de l'adresse du tableau une fois crée dans la fonction dans une fonction int **
Mais je me pose quand même la question de savoir comment faire pour le faire directement avec des pointeurs et si c'est possible, voir même conseillé??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 int ** creerTableau (int *pLongueurDamier, int *pLargeurDamier) { int i, j; int **pDamier = NULL; printf("Longueur (max 26) et largeur de la carte (ex : 15 10) : "); scanf("%d %d", pLongueurDamier, pLargeurDamier); pDamier = malloc(*pLongueurDamier * sizeof(int *)); for(i = 0 ; i < *pLongueurDamier ; i++) { pDamier[i] = malloc(*pLargeurDamier * sizeof(int)); } for(i = 0 ; i < *pLongueurDamier ; i++) { for(j = 0 ; j < *pLargeurDamier ; j++) { pDamier[i][j] = 0; } } return pDamier; }
Merci d'avance
Partager