En programmation, les tableaux sont des structures de données essentielles pour stocker des collections de données. Lorsqu'il s'agit de tableaux multidimensionnels, il est important de comprendre comment ils peuvent être transmis à des fonctions pour effectuer des opérations sur leurs éléments.
Considérez le code C suivant :
void print(int *arr[], int s1, int s2) { // ... } int main() { int a[4][4] = {{0}}; print(a, 4, 4); }
Ce code vise à transmettre un tableau multidimensionnel a de type int[4][4] vers une fonction print qui attend un tableau de pointeurs vers des entiers (int **). Étonnamment, ce code se compile avec succès en C mais pas en C.
En C, l'erreur est claire :
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
Cette erreur signifie que C ne permet pas la conversion implicite d'un tableau multidimensionnel (int[4][4]) vers un tableau de pointeurs vers des entiers (int **). En effet, ces deux types de données sont fondamentalement différents dans leur structure et leur interprétation.
Pour corriger cette erreur, vous pouvez utiliser une technique appelée « décroissance des adresses de tableau » en C ou convertir explicitement le tableau multidimensionnel en un tableau de pointeurs en C .
C:
int main() { int a[4][4] = {{0}}; print(a, 4); // Pass the base address of the multidimensional array (array address decay) } void print(int *arr, int s) { // ... }
C :
int main() { int a[4][4] = {{0}}; print(a, 4, 4); // Explicit conversion to an array of pointers } void print(int **arr, int s1, int s2) { // ... }
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!