Tableau d'entiers
Résolu
anaurel
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
Felice_ Messages postés 265 Date d'inscription Statut Membre Dernière intervention -
Felice_ Messages postés 265 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais savoir comment renvoyé à laide d'une fonction un tableau d'entiers ou de floats en C
Merci
Je voudrais savoir comment renvoyé à laide d'une fonction un tableau d'entiers ou de floats en C
Merci
A voir également:
- Tableau d'entiers
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
Bonjour anaurel,
En rendant le tableau statique.
Exemple :
En rendant le tableau statique.
Exemple :
#include <stdio.h> int *maFonction() { static int tableau[] = {6, 3, 19}; return tableau; } int main(int argc, char *argv[]) { int *maFonction(); int *tableau = maFonction(); printf("%d %d %d\n", tableau[0], tableau[1], tableau[2]); return 0; }
Une fonction ne peut pas retourner un tableau, les contournements sont :
struct TabArr { int arr[10]; }; // en l'encapsulant dans une structure struct TabArr fct1() { struct TabArr tab; tab.arr[0] = ...; return tab; // Le tableau est bien totalement copié } // ou c'est l'appelant qui réserve, la fonction remplit void fct2( int arr[] ) { arr[0] = ... } // ou la fonction retourne l'adresse d'un tableau statique (devient "non réentrante", la fonction peut difficilement être appelée 2 fois!), et la taille du tableau est "perdue", il faudrait aussi la transmettre... int* fct3() { static int arr[10]; return arr; } // si le tableau est dynamique, la valeur retournée devra être accompagnée de sa taille (il y a donc 2 données à retourner), ET le tableau devra impérativement être détruit, le passage par pointeur est préférable void fct4( int**p_arr , unsigned* p_taille ) { *p_arr = malloc( 10 * sizeof(**p_arr) ); *p_taille = 10; (*p_arr)[0] = ... } int main() { struct TabArr arr1 = fct1(); int arr2[10]; fct2( arr2 ); int* arr3 = fct3(); // mais la rappeler c'est retrouver le même tableau! int arr3_[10]; memcpy( arr3 , fct3() , sizeof arr3_ ); int* arr4 =0; unsigned taille; fct4( &arr4 , &taille ); if ( arr4 ) free( arr4 ); }
cool ca marche
une chose: quel est le role de static
Pense à mettre le sujet comme résolu, merci.