Tableaux 2 dim comme argument d'une fonction
Résolu
pythamede
Messages postés
49
Statut
Membre
-
pythamede Messages postés 49 Statut Membre -
pythamede Messages postés 49 Statut Membre -
Bonjour à tous,
Ma question concerne le passage d'arguments de fonction lorsqu'il s'agit de tableaux à deux dimensions.
Pour passer un tableau à une seule dimension, je n'ai pas de difficulté. La fonction de présente comme ceci :
Mais si a est à deux dimensions : int a[10][10]
Le compilateur ne proteste pas lorsque je définis a dans la fonction par "**a"
Je ne comprends pas par quel miracle le compilateur accepte tout au niveau de la fonction ; est-ce réellement ce qu'il faut faire ?
Et en tous cas je n'ai pas trouvé comment faire appel à cette fonction pour que le compilateur l'accepte.
Merci de m'aider.
P.S. J'utilise Microsoft J'utilise C++, mais, à tort ou à raison, je pense que la réponse serait la même pour du simple langage C.
Ma question concerne le passage d'arguments de fonction lorsqu'il s'agit de tableaux à deux dimensions.
Pour passer un tableau à une seule dimension, je n'ai pas de difficulté. La fonction de présente comme ceci :
void ma_fonction(int *a)
{
// et à l'intérieur je peux faire référence à n'importe quel élément du tableau a :
a[3]=1; // par exemple
}
void main()
{
int a[1000];
...
ma_fonction(a);
}
Mais si a est à deux dimensions : int a[10][10]
Le compilateur ne proteste pas lorsque je définis a dans la fonction par "**a"
void ma_fonction(int **a)
{
// ni même lorsque je fais référence à un élément
if(a[3][5]==0)
{
....
}
// ce n'est probablement pas très orthodoxe...
}
mais le compilateur proteste au niveau de l'appel de la fonction :
void main()
{
...
int a[10][10];
ma_fonction(a);
}
Je ne comprends pas par quel miracle le compilateur accepte tout au niveau de la fonction ; est-ce réellement ce qu'il faut faire ?
Et en tous cas je n'ai pas trouvé comment faire appel à cette fonction pour que le compilateur l'accepte.
Merci de m'aider.
P.S. J'utilise Microsoft J'utilise C++, mais, à tort ou à raison, je pense que la réponse serait la même pour du simple langage C.
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Tableaux 2 dim comme argument d'une fonction
- Fonction si et - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Fusionner 2 tableaux excel - Guide
- 2 ecran pc - Guide
- Imprimer tableau excel sur une page - Guide
1 réponse
Bonjour,
Attention, à ne pas confondre pointeur et tableau. En C, on ne peut pas passer de tableau en argument, juste des pointeurs.
Note : le bon prototype du main() sans argument est : int main(void).
Et il ne faut pas oublier : return 0; en fin de de main().
Pour répondre à ton problème, essaie : void ma_fonction(int a[][10]). Pas besoin de définir le nombre de lignes, juste le nombre de colonnes.
Google is your friend
Attention, à ne pas confondre pointeur et tableau. En C, on ne peut pas passer de tableau en argument, juste des pointeurs.
Note : le bon prototype du main() sans argument est : int main(void).
Et il ne faut pas oublier : return 0; en fin de de main().
Pour répondre à ton problème, essaie : void ma_fonction(int a[][10]). Pas besoin de définir le nombre de lignes, juste le nombre de colonnes.
Google is your friend
pythamede
Messages postés
49
Statut
Membre
1
Ça marche super bien ! Merci beaucoup. Cela faisait si longtemps que je me posais cette question !