Ritorno di array da funzioni

di il
3 risposte

Ritorno di array da funzioni

Ciao ragazzi,

sono nuovo in questo forum e nuovo anche con la programmazione in C. Ho questo problema, come faccio da una funzione generica a ottenere in uscita un vettore? e questo vettore poi come lo lego al programma principale?

grazie in anticipo

3 Risposte

  • Re: Ritorno di array da funzioni

    Ciao, non mi e' molto chiara la domanda comunque ti ho fatto un sorgente di esempio che mostra come ottenere un vettore (o meglio l'indirizzo del suo primo elemento) come valore di ritorno di una funzione e come utilizzarlo.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define N   (10)
    
    
    /* Prototipi funzione */
    int* crea_vettore       (int*, int);
    void distruggi_vettore  (int*);
    void visualizza_vettore (const int*, int);
    
    
    
    int main(void) {
        int* v;
        int  i;
    
    
        /* Creo il vettore */
        v = crea_vettore(v, N);
    
        /* Riempo il vettore con N numeri */
        for (i = 0; i < N; ++i) *(v + i) = i;
    
        /* Visualizzo il vettore */
        visualizza_vettore(v, N);
    
        /* Distruggo il vettore */
        distruggi_vettore(v);
        return 0;
    }
    
    
    int* crea_vettore(int* v, int nelem) {
        if (!(v = malloc(nelem * sizeof(int))))
            perror("malloc()");
        return v;
    }
    
    void distruggi_vettore(int* v) {
        free(v);
        v = NULL;
    }
    
    void visualizza_vettore(const int* v, int nelem) {
        int i;
    
        for (i = 0; i < nelem; ++i)
            printf("Elemento [%d] => %d\n", i, *(v + i));
    }
    
    Come puoi vedere per utilizzare i vettori nelle funzioni si deve ricorrere all'utilizzo dei puntatori e nel nostro caso all'allocazione dinamica della memoria dato che vogliamo creare un vettore in una funzione.
    Saluti, netburst.
  • Re: Ritorno di array da funzioni

    Quoto netburst!
    un consiglio... per i neofiti di C sarebbe meglio presentare l'array con l'accesso per mezzo di un indice invece che con i puntatori!
    L'impiego dei puntatori garantisce generalmente maggiore velocità d'esecuzione, ma come detto prima risulta per certi versi più difficile da capire, almeno ai neofiti!
  • Re: Ritorno di array da funzioni

    Grazie ora e´ tutto chiaro ..ero quello che cercavo!
Devi accedere o registrarti per scrivere nel forum
3 risposte