Passer un tableau multidimensionnel à une fonction en C
Dans cet extrait de code, une tentative est faite pour passer un tableau multidimensionnel de style C à un fonction qui attend un tableau de pointeurs entiers :
#include<stdio.h> void print(int *arr[], int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print(a,4,4); }
Ce code se compile en C mais pas en C . Voici pourquoi :
print(&a[0],4,4);
En C , cette désintégration n'est pas autorisée.Le Le type de tableau int4 n'est pas implicitement convertible en type de pointeur int**. Ceci explique le message d'erreur :
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
Solution :
Pour passer un tableau multidimensionnel à une fonction en C , il faut explicitement convertir vers un pointeur du type approprié. Ceci peut être réalisé en utilisant la technique suivante :
#include<stdio.h> void print(int **arr, int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print((int **)a,4,4); }
En convertissant explicitement le tableau en pointeur à l'aide du cast (int )**, le code se compile désormais et se comporte comme prévu dans à la fois C et C.
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!