PDA

Visualizza la versione completa : [C] Ritornare array da funzione


torky
08-01-2012, 17:13
Qualcuno puo spiegarmi come ritornare un array da una funzione.
il prototipo o la dichiarazione della funzione devono avere qualcosa di particolare?
per esempio se dovessi ritornare un array duoble popolato nella funzione andrebbe bene questo:


double funzione(void);

main(){

......
......

c=funzione();

}
double funzione(void){

for(i=0;i<n;i++){
k=(double)lrand48()/RAND_MAX;
arr[i]=k
}

return arr;
}

Quando chiamo la funzione nel main a cosa devo eguagliare lafunzione??

Dark867
08-01-2012, 17:18
Devi fare 2 cose:
1)Allocare il tuo array in maniera DINAMICA all'interno della funzione.
2)Ritornare il puntatore all'array.

Questo perché se provi ad allocare staticamente il tuo array questo viene immediatamente deallocato all'uscita della funzione.

torky
08-01-2012, 18:07
Ok ma come si fa ad allocare dinamicamente una variabile e nel caso specifico un'array?scusa l'ignoranza ma sul libro non ho trovato nulla...

ramy89
08-01-2012, 19:07
Puoi usare una funzione come malloc (http://www.cplusplus.com/reference/clibrary/cstdlib/malloc/).

torky
08-01-2012, 20:06
Originariamente inviato da ramy89
Puoi usare una funzione come malloc (http://www.cplusplus.com/reference/clibrary/cstdlib/malloc/).

Sono riuscito a ritornarlo con malloc, ma mi si presenta un altro problema, per ritornare ho dovuto dichiarare una funzione di tipo double* , quando nel main voglio stamapre i valori dell array non so che descrittore usare nel printf dato che se uso %lf mi dice che il tipo della variabile è double* , e %lf non va bene perche rappresenta un semplice double

ramy89
08-01-2012, 20:20
Usa il %f , posta il codice comunque.

oregon
09-01-2012, 10:02
Originariamente inviato da torky
Sono riuscito a ritornarlo con malloc, ma mi si presenta un altro problema, per ritornare ho dovuto dichiarare una funzione di tipo double* , quando nel main voglio stamapre i valori dell array non so che descrittore usare nel printf dato che se uso %lf mi dice che il tipo della variabile è double* , e %lf non va bene perche rappresenta un semplice double

Ma tu sai usare i puntatori?

Se ottieni un puntatore a double, lo utilizzi così

*p

per ottenere il corrispondente valore.

kartman81
09-01-2012, 10:10
Originariamente inviato da oregon
Ma tu sai usare i puntatori?

Se ottieni un puntatore a double, lo utilizzi così

*p

per ottenere il corrispondente valore.

quoto. si usa * per il valore , mentre il & è usato per l indirizzo.

torky
09-01-2012, 14:16
Originariamente inviato da oregon
Ma tu sai usare i puntatori?

Se ottieni un puntatore a double, lo utilizzi così

*p

per ottenere il corrispondente valore.


No non li so usare......grazie ramy!!

oregon
09-01-2012, 15:38
Originariamente inviato da torky
No non li so usare......grazie ramy!!

Quindi .... ?

Loading