Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071

    [c++]Ritorno a funzione di un vettore

    codice:
    int* fusione (int a[], int m, int b[], int n){
    	int i = 0;
    	int j = 0;
    	int k = 0;
    	int c[10];
    	
    	while((i < m) && (j < n)){
    		if(a[i] < b[j]) c[k++] = a[i++];
    		else c[k++] = b[j++];
    	}
    
    	while (i < m) c[k++] = a[i++];
    	while(j < n) c[k++] = b[j++];
    
    	return c;
    }
    
    void main(){
    	int a[] = {1, 2, 3, 4, 8};
    	int b[] = {3, 5, 7, 9};
    	int *c;
    	
    	c = fusione(a, 5, b, 4);
    
    	for(int i = 0; i < 10; i++)
    		cout<<c[i]<<" ";
    
    }
    Non funziona perchè c è locale e quindi nel momento in cui esco dalla funzione c smette di esistere?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ovviamente ...

  3. #3
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    e boh... dunque che senso hanno i puntatori a funzione se poi devo dichiarare il vettore o quello che è globalmente?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [c++]Ritorno a funzione di un vettore

    Originariamente inviato da Il Pazzo
    Non funziona perchè c è locale e quindi nel momento in cui esco dalla funzione c smette di esistere?
    Certo! Hai 2 possibilità:
    a) L'array di destinazione lo definisci nel chiamante (main nel tuo caso) e lo passi alla funzione che lo dovrà riempire. In questo modo è il chiamante che si deve preoccupare della allocazione dell'array.

    b) L'array lo allochi dinamicamente nella funzione e fai ritornare al chiamante un puntatore. In questo modo è la funzione che si preoccupa della allocazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071

    Re: Re: [c++]Ritorno a funzione di un vettore

    Originariamente inviato da andbin
    b) L'array lo allochi dinamicamente nella funzione e fai ritornare al chiamante un puntatore. In questo modo è la funzione che si preoccupa della allocazione.
    Ahh quindi se lo alloco dinamicamente il vettore, nel momento in cui esco dalla funzione in cui è dichiarato, il vettore non smette di esistere... ho capito bene? (In questo caso avrei anche capito il senso dei puntatori a funzione allora)

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [c++]Ritorno a funzione di un vettore

    Originariamente inviato da Il Pazzo
    Ahh quindi se lo alloco dinamicamente il vettore, nel momento in cui esco dalla funzione in cui è dichiarato, il vettore non smette di esistere... ho capito bene?
    Sì esatto. Un blocco di memoria allocato dinamicamente smette di esistere solo quando si fa una "free" esplicita (funzione free() se si usa malloc/calloc/realloc o 'delete' in C++ se si usa new).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Semplicemente perche' il vettore viene allocato dinamicamente nell'heap e non nello stack ...

  8. #8
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    ah si giusto vero... ok grazie....

  9. #9
    Non ho capito il nesso con i puntatori a funzioni.
    Ci sono 10 tipi di persone al mondo, chi conosce il sistema binario e chi no.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da bigmickey
    Non ho capito il nesso con i puntatori a funzioni.
    Non l'hai capito perche' non c'e' ...

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.