View Single Post
Old 01-06-2006, 13:00   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da vermaccio
se ho una funzione

void esempio(double *x) {

double i;
double numero=7;

for (i = 0; i<numero; i++) {
*(x+i)=i;
}

} //end function



se nel main attivo


double test[7];
esempio(&test[0]);


alla fine avrò:

test[0]=0;
test[1]=1;
test[2]=2;
test[3]=3;
test[4]=4;
test[5]=5;
test[6]=6;
Ok, non fa una piega. Io userei solo l'indice del for di tipo intero e poi userei x[i] invece di *(x+i), che comunque sarebbe la stessa cosa.

Quote:
Originariamente inviato da vermaccio
domanda:
ma...se io NON so a priori il ciclo for dentro la funzione quante volte verrà attivato (al posto del "numero=7" ho un valore che saprò solo durante lo svolgimento della funzione).Ebbene:
poichè nel main ho definito

double test[7];
ovvero è come se avessi detto (tanto per capire)
test[numero]; visto che numero=7

come faccio?
io num non lo so.

se la funzione mi "spara" numero=12
che ne so io a priori da scrivere nel listato
double test[12];


come risolvo?

cioè come faccio a apssare alla funzione l'indirizzo del primo elemento di un array di cui però non ho idea di quanti elementi avrà l'array e quindi non posso definirlo a priori?

oppure c'è un altro metodo?

insoma io devo costruire un array dentro una funzione, atrray che sarà poi visibile come variabile globale nel main e di cui non so quanto deve essere grosso a priori ma solo durante lo svolgimento della function stessa.
Questo non è molto chiaro. Se una funzione deve operare su un array, deve almeno sapere, in qualche modo, quanti elementi contiene!!! Devi allocare dinamicamente l'array??? E poi cosa significa "visibile come variabile globale nel main"???
Spiega meglio cosa vorresti fare.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso