Array con funzioni esterne

di Anonimizzato22996 il
8 risposte
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

  • 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;
    }
    
  • 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
  • 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 !
  • 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];
      }
    
    }
    
  • 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
  • E' strano perché nel libro vengono utilizzate funzioni Void,
    grazie comunque per l'aiuto
  • Dariodot, se guardi hai un messaggio nell'area dei messaggi personali.
  • 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