Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    104

    C Array come valore di ritorno di una funzione

    ho questo problema nel mio programma C, ovvero io devo fare tornare i valori contenuto nel mio array solo che quando vado a puntare al valore di ritorno mi punta solo al primo elemente ma non a tutti gli altri elementi, comunque copio qui il mio codice per farvi capire:

    int funzione(...){
    int a[3];
    ...
    a[0]=valore0;
    a[1]=valore1;
    a[2]=valore2;
    return(*a);
    }


    void funzione1(...){
    int a[3];
    *a=funzione(...);
    printf("valore di a[0] %d", a[0]);
    printf("valore di a[0] %d", a[1]);
    printf("valore di a[0] %d", a[2]);
    }

    detto in soldoni quello che devo fare è questo, o almeno secondo me funziona così, solo che facendo in questo modo l'array in funzione1 punta correttamente solo al valore di a[0] dell'array di funzione e non ad a[1] ed a[2] i due valori corrispettivi o che almeno devo essere corrispettivi in funzione1 puntano a tutt'altro valore...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Il linguaggio, come da Regolamento?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    L'array deve essere passato tramite puntatore.

    L'array, se definito internamente alla funzione, deve essere statico; altrimenti allocato dalla funzione chiamante.

    Oppure deve essere allocato dinamicamente in memoria.

    Quindi

    codice:
    int *funzione(void)
    {
      static int a[3];
    
      a[0]=111;
      a[1]=222;
      a[2]=333;
    
      return(a);
    }
    
    
    void main(void)
    {
      int *a;
    	
      a=funzione();
    
      printf("valore di a[0] %d\n", a[0]);
      printf("valore di a[1] %d\n", a[1]);
      printf("valore di a[2] %d\n", a[2]);
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.