Maison > développement back-end > C++ > Comment puis-je transmettre correctement un tableau multidimensionnel à une fonction en C ?

Comment puis-je transmettre correctement un tableau multidimensionnel à une fonction en C ?

Mary-Kate Olsen
Libérer: 2025-01-01 13:41:10
original
705 Les gens l'ont consulté

How Can I Correctly Pass a Multidimensional Array to a Function in C  ?

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);
}
Copier après la connexion

Ce code se compile en C mais pas en C . Voici pourquoi :

  • En C, un tableau multidimensionnel peut se décomposer en un pointeur vers son premier élément. Cela signifie que le code ci-dessus est équivalent à :
print(&a[0],4,4);
Copier après la connexion
  • 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)'
    Copier après la connexion

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal