Newsgroup: it.comp.programmare
Titolo: HELPPPP!!!! Riferimenti a array

Ciao ragazzi.
Ho un problema.
Devo passare ad una funzione un riferimento a vettore ma il mio IDE non me
lo consente.
Premetto che sto lavorando in C++ Builder 3.
Ecco il codice:
void AnalizzaVett(int pos_vett_orig,int dim_orig,int &Vett_orig ,
                  int &Vett_dest)
{
 for(int i = 0; i < 4; i++)
 Vett_dest[i]=0;             // Error: invalid indirection
Come posso fare appunto per evitare quell'errore?
E' possibile passare ad una funzione un riferimento ad array?
Grazie mille!!!
--
-------------------------------------------------------
Maverick
PGP-Key available on Key-server

Gli array in C++ vengono passati solo per riferimento, quindi togli
gli & davanti ai due parametri Vett e aggiungi [], oppure cambiali in
*, poichè array e puntatori sono perfettamente equivalenti.

E' possibile passare ad una funzione un riferimento ad array?
si tramite puntatore....
al posto di int &Vett_orig, int &Vett_dest
passa oggetti del tipo int *Vett_orig, int *Vett_dest
in tal modo potrai utilizzare l'operatore [] per accedere ai vari dati
contenuti in vett, ma é a tuo carico la verifica che l'elemento i
non fuoriesca dalla memoria
cod

 ha scritto nel messaggio
news:6agsgtockmqqhgj5g...@4ax.com...

grazie a tutti ragazzi!

*, poichč array e puntatori sono perfettamente equivalenti.
calma, calma. In C++ gli array vengono passati come in C, quindi non
per riferimento ma tramite un puntatore al loro primo elemento.
Inoltre č assolutamente falso che array e puntatori siano equivalenti.
Sono due tipi ben distinti; l'unica cosa che hanno in comune č, per
l'appunto, che un array usato come argomento per una funzione decade a
puntatore. Per il resto sono due cose diverse.
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688

Hai ragione, in effetti, proprio perchč l'indirizzo di base del vettore č
dato dal suo nome, noi possiamo accedere alla posizione i-esima del vettore
o con gli operatori di accesso
v[i];
oppure con l'operatore di addizione
v+i;
(almeno questo hanno insegnato a me)
Ciao
Alby

 E' possibile passare ad una funzione un riferimento ad array?
Probabilmente mi sto sbagliando, ma int& Vett_dest non è solo un intero 
passato per riferimento?? Tu stai tentando (nel ciclo for) di assegnare 
valori come se fosse un'array.
Ciao
Luigi 


mah ...
in effetti il problema non si pone: perchč passare un riferimento quando
comunque i vettori vengono passati per indirizzo?
Non c'č bisogno di passare ne l'indirizzo ne niente, visto che cmq il
vettore viene modificato.
alby

 vettore viene modificato.
Si, ma a prescindere da questo,  l'istruzione seguente:
for(int i = 0; i < 4; i++)
  Vett_dest[i]=0;             
Non è sbagliata dato che Vett_dest è un intero e non un array di interi?
ciao
Luigi
--
bug windows [5] = {"95", "98", "NT", "Me", "2000"};

mah ...
può darsi.
Nel nostro corso purtroppo abbiamo iniziato da non molto a fare c++ ....
prima facevo C e basta (sai com'è ste scuole di merda) e quindi le cose che
so (le poche cose che so) sul c++ le ho dovute imparare da me ...
Non so come sono visti i riferimenti del C++ , se si possono considerare
come puntatori o no .... ma penso che abbia ragione tu.
ciao
alby

Non sto qui a discutere sullo standard e sulla teoria, con tutta
probabilità ne sai più di me .... il punto è che guardando il codice
macchina prodotto faccio 2+2, forse mi esprimo male ma la sostanza per
me quella è ..... e non vado oltre.

Difatti, leggendo il manuale C++ Mc-Graw Hill, c'č la frase "stretta
relazione" e non "uguaglianza" ..... mi dovete perdonare ma con il
codice macchina il concetto di tipo, almeno per quello che mi
riguarda, va un pň a farsi benedire.....

Maverick ha scritto:

Si, ma il punto non è questo! :)
Io avevo solo considerato il fatto che un intero fosse stato trattato come 
un array di interi.
ciao
-- 
