Probleme tableau en C
Résolu/Fermé
Coucou1504
Messages postés
60
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
12 février 2010
-
16 mai 2008 à 17:42
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 16 mai 2008 à 20:23
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 - 16 mai 2008 à 20:23
A voir également:
- Probleme tableau en C
- Tableau word - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
1 réponse
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
16 mai 2008 à 20:23
16 mai 2008 à 20:23
Bonjour,
Je crois que j'ai compris la question...
Le problème serait de récupérer le tableau en dehors de la fonction de saisie ?
On pourrait envisager deux possibilités, la deuxième est souvent celle adoptée. (pour sa propreté et son extensibilité)
1)
On alloue un tableau dans lequel on stoque également la taille du tableau et la fonction retourne l'adresse du tableau :
int * saisir(...)
2)
On passe en argument les adresses de variables afin que la fonction puisse les remplir.
En C les paramètres des fonctions sont des copies, si la fonction modifie son paramètre, elle ne modifie que sa copie personnelle. Ainsi on donne en paramètre l'adresse d'une variable. L'adresse elle même est une copie, mais la fonction peut écrire des données à cette adresse. (donc dans la variable dont l'adresse lui est donnée)
Juste deux petites remarques:
A chaque malloc doit correspondre un free
Saisir alloue un tableau de 3 (son paramètre) puis saisit une taille, puis écrit taille valeurs (jusqu'à 5) dans le tableau de taille 3
M.
Je crois que j'ai compris la question...
Le problème serait de récupérer le tableau en dehors de la fonction de saisie ?
On pourrait envisager deux possibilités, la deuxième est souvent celle adoptée. (pour sa propreté et son extensibilité)
1)
On alloue un tableau dans lequel on stoque également la taille du tableau et la fonction retourne l'adresse du tableau :
int * saisir(...)
2)
On passe en argument les adresses de variables afin que la fonction puisse les remplir.
void saisir( int a, int b, int **ppiCoef, unsigned int *puTaille ) { ... *puTaille = 2; *ppiCoef = (int *) malloc( (*puTaille) * sizeof(int) ); if ( *ppiCoef != NULL ) { ... } else {// Memory allocation failed *puTaille = 0; } ... } int *tab; unsigned int taille; saisir( 3, 3, &tab, &taille ); ... if ( tab != NULL ) { free( tab ); }
En C les paramètres des fonctions sont des copies, si la fonction modifie son paramètre, elle ne modifie que sa copie personnelle. Ainsi on donne en paramètre l'adresse d'une variable. L'adresse elle même est une copie, mais la fonction peut écrire des données à cette adresse. (donc dans la variable dont l'adresse lui est donnée)
Juste deux petites remarques:
A chaque malloc doit correspondre un free
Saisir alloue un tableau de 3 (son paramètre) puis saisit une taille, puis écrit taille valeurs (jusqu'à 5) dans le tableau de taille 3
M.