Array con funzioni esterne

di il
8 risposte

Array con funzioni esterne

Salve,
non riesco a capire come utilizzare far comunicare un array (o peggio un array multidimensionale)
con il main e una funzione esterna ad esso.
Se da una funzione esterna devo far ritornare al main un array, come faccio (so che non si può direttamente).
(Bisogna forse utilizzare i puntatori? Se si, come?)
Qualcuno mi potrebbe gentilmente dare una spiegazione, magari con un esempio?

Grazie davvero tanto in anticipo

8 Risposte

  • Re: Array con funzioni esterne

    Usi i puntatori. Allochi dinamicamente l'array (a seconda di quante dimensioni devi utilizzare, userai puntatori opportuni) e restituisci il puntatore.

    Per un semplice array di interi ad una dimensione
    
    int *funz()
    {
       int *p;
       (segue allocazione memoria)
       return p;
    }
    
  • Re: Array con funzioni esterne

    Ok,
    e in "int *funz()" cosa indica il " * ", che la variabile di ritorno è puntatore?
    Inoltre avrei ancora questi dubbi:
    Nell'argomento della funzione non dovrei mettere appunto il puntatore? lo devo definire anche nel Main?
    E come la richiamo la funzione nel main per poter utilizzare l'array?

    Mi scuso per la confusione, ma non so a chi altro poter chiedere
  • Re: Array con funzioni esterne

    dariodot ha scritto:


    Ok,
    e in "int *funz()" cosa indica il " * ", che la variabile di ritorno è puntatore?

    Inoltre avrei ancora questi dubbi:
    Nell'argomento della funzione non dovrei mettere appunto il puntatore?
    Nel caso che ti ho mostrato la funzione restituisce un array tramite puntatore, non lo accetta.
    Se lo devi passare alla funzione allora il puntatore va passato come argomento.
    lo devo definire anche nel Main?
    E come la richiamo la funzione nel main per poter utilizzare l'array?
    Nel main, scriverai, ad esempio
    
    int *punt;
    
    punt = funz();
    
    Mi scuso per la confusione, ma non so a chi altro poter chiedere
    Beh, come tutti, nei libri !
  • Re: Array con funzioni esterne

    Sto cercando di fare delle prove,
    per esempio compilando gli elementi di un array tramite una funzione,
    e poi stampare l'array dal Main.
    Ma mi viene l'errore segmentation fault...
    dovrebbe essere perchè l'indirizzo di memoria nella funzione esterna poi viene a mancare quando vado dentro al main?

    Che errori ho fatto?
    Grazie ancora
    
    #include <stdlib.h>
    #include <stdio.h>
    #define LEN 5
    
    void array (int* );
    
    int main () {
    
      int i;
      int* puntatore;
      array (puntatore);
    
      printf("\nL'array è: \n");
      for (i=0;i<LEN;i++){
        printf("%d",*puntatore+i);
    }
    
    }
    
    
    void array (int* ptr) {
      int A[LEN];
      int i;
    
      printf("Compilare i valori dell'Array\n");
      for (i=0;i<LEN;i++) {
        printf("Inserire il valore %d: ",i+1);
        scanf("%d",&A[i]);
        ptr+i == &A[i];
      }
    
    }
    
  • Re: Array con funzioni esterne

    Quello che ti ho detto non è servito. La funzione deve restituire un puntatore non deve essere void.

    I tentativi senza studiare dai libri non vanno bene
  • Re: Array con funzioni esterne

    E' strano perché nel libro vengono utilizzate funzioni Void,
    grazie comunque per l'aiuto
  • Re: Array con funzioni esterne

    Dariodot, se guardi hai un messaggio nell'area dei messaggi personali.
  • Re: Array con funzioni esterne

    Non è strano. Puoi anche usare un parametro per passare il puntatore ma, in questo caso devi passare il suo indirizzo.

    Per un semplice vettore devi usare un doppio puntatore e così via.

    @Aldo ... Spero che tu non continui in privato le discussioni che devono essere fatte sul forum...
Devi accedere o registrarti per scrivere nel forum
8 risposte