Tableau d'entiers
Résolu/Fermé
anaurel
Messages postés
37
Date d'inscription
vendredi 26 mai 2017
Statut
Membre
Dernière intervention
12 janvier 2018
-
26 mai 2017 à 23:37
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 - 27 mai 2017 à 13:12
Felice_ Messages postés 265 Date d'inscription mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 - 27 mai 2017 à 13:12
A voir également:
- Tableau d'entiers
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
2 réponses
Felice_
Messages postés
265
Date d'inscription
mardi 25 avril 2017
Statut
Membre
Dernière intervention
20 juillet 2017
11
27 mai 2017 à 00:46
27 mai 2017 à 00:46
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; }
Dalfab
Messages postés
706
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
2 novembre 2023
101
27 mai 2017 à 10:03
27 mai 2017 à 10:03
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 ); }
27 mai 2017 à 12:42
cool ca marche
une chose: quel est le role de static
27 mai 2017 à 13:12
Pense à mettre le sujet comme résolu, merci.