Passage de paramètre pour la creation d'un tableau dynamique a 2 dimensions dans une fonction
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:
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:
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 **
Code:
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;
} |
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é??
Merci d'avance :)