Conversion de tableaux multidimensionnels en pointeurs en C
En C , les tableaux multidimensionnels ne sont pas directement compatibles avec les pointeurs doubles. Lorsque vous tentez de convertir un tableau double4 en double en utilisant la « manière évidente », MatrixInversion((double)startMatrix, 4, (double)inverseMatrix), des erreurs peuvent survenir.
La raison réside dans la manière distincte dont les tableaux multidimensionnels et les pointeurs doubles représentent les données. Alors que double4 représente un tableau 2D sous forme de ligne majeure, double représente un tableau de pointeurs double*, chacun pointant vers une ligne du tableau.
Pour résoudre cette incompatibilité, on peut modifier l'interface de la fonction ou la structure du tableau passée en argument.
Modification de la structure du tableau
Pour rendre le tableau double4 existant compatible avec la fonction, créez des tableaux "index" temporaires de type double *[4] pointant vers le début de chaque ligne dans chaque matrice :
<code class="cpp">double *startRows[4] = { startMatrix[0], startMatrix[1], startMatrix[2] , startMatrix[3] }; double *inverseRows[4] = { /* same thing here */ };</code>
Passez plutôt ces tableaux "index" :
<code class="cpp">MatrixInversion(startRows, 4, inverseRows);</code>
La fonction placera correctement le résultat dans le tableau inverseMatrix d'origine.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!