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.