Passer un tableau de taille fixe à une fonction avec un argument de pointeur

Je me demande s’il existe un moyen de faire fonctionner le code suivant ou dois-je créer une nouvelle copie de la fonction pour des tailles fixes? Si oui, comment puis-je avoir une fonction générique pour des tailles fixes?

void prettyPrintMasortingx_float(float **masortingx, int rows, int cols){ int i, j; for (i = 0; i<rows; i++){ for (j = 0; j<cols; j++){ printf("%10.3f", matrix[i][j]); } printf("\n"); } return; } float ppArray[4][10] = {0.0f}; prettyPrintMatrix_float(ppArray, 4, 10); 

Donne une erreur. Access violation reading location 0xFFFFF...

Si le compilateur prend en charge les tableaux de longueur variable, vous pouvez définir la fonction comme suit:

 void prettyPrintMasortingx_float( int rows, int cols, float masortingx[rows][cols] ){ int i, j; for (i = 0; i 

Sinon, vous pouvez définir la fonction comme

 void prettyPrintMasortingx_float(const float *masortingx, int rows, int cols) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { printf("%10.3f", matrix[i * cols + j]); } putchar('\n'); } } 

et l'appelle comme

 prettyPrintMasortingx_float( ( const float * )ppArray, 4, 10); 

Si les tableaux de longueur variable ne sont pas disponibles et que votre fonction prend des masortingces de dimensions variables, vous devrez le traiter comme un tableau unidimensionnel et effectuer manuellement le calcul pour calculer le début la rangée est. Quelque chose comme ça:

 void prettyPrintMasortingx_float(float *masortingx, int rows, int cols){ int i, j; for (i = 0; i