42 votes

Le tableau 2D est-il un double pointeur ?

int main()
{
    matrix[2][4] = {{11,22,33,99},{44,55,66,110}};
    int **ptr = (int**)matrix;
    printf("%d%d",**matrix,*ptr);
}

Mais lorsqu'un tableau 2D est passé en paramètre, il est transtypé dans (*matrix)[2] .. sous quel type le compilateur stocke-t-il ce tableau... est-il stocké en tant que tableau 2D ou pointeur double ou pointeur vers un tableau .. S'il stocke en tant que tableau, comment interprète-t-il différemment dans différentes situations comme ci-dessus . Merci de m'aider à comprendre.

1voto

long404 Points 402

Si vous pouvez utiliser la pile pour ces données (petit volume), vous définissez généralement la matrice :

 int matrix[X][Y]

Lorsque vous souhaitez l'allouer dans le tas (grand volume), vous définissez généralement un :

 int** matrix = NULL;

puis allouez les deux dimensions avec malloc/calloc. Vous pouvez traiter le tableau 2d comme un int** mais ce n'est pas une bonne pratique car cela rend le code moins lisible. Autre que cela

 **matrix == matrix[0][0] is true

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X