|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 64
|
[C++] Array e funzione
Ciao a tutti, avendo da poco iniziato ad usare c++, mi trovo in difficoltà nella gestione degli array.
In particolare questo succede quando voglio utilizzare delle funzioni con file .h per allegerire il main, al momento di dare in uscita della funzione l'array elaborata, ed il successivo richiamo. Nel file zip vi sono il file principale e due funzioni, quella problematica è il raddoppia, una semplice funzione che mi sono inventato per creare una funzione che lavora sui singoli componenti dell'array. Il primo problema è cosa mettere in return, e successivamente come richiamare questo dal file principale. Grazie a tutti!! Leggendo un pò in giro ho scoperto che devono essere utilizzati i puntatori, è l'unica via percorribile? Ultima modifica di Mattiatn : 15-09-2008 alle 16:42. |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Aug 2008
Messaggi: 8
|
in C come argomento di funzione puoi passare indifferentemente un array o un puntatore a questo array (in realtà passi sempre un puntatore all'array)
double * Doppio ( double Dati[], int dim ); e double * Doppio ( double * Dati, int dim ); sono perfettemente equivalenti e puoi in entrambi i casi utilizzare il corpo funzione che hai scritto, cioè accedere ai dati di Dati con il costrutto Dati[index], che è equivalenge a *(Dati+index) Una funzione non può tuttavia ritornare un array ma solo il puntatore a questo. Tuttavia non stiamo parlando di C, se vuoi utilizzare il C++ ti conviene stdiare la libreria standard del c++ la classe vector http://www.cplusplus.com/reference/stl/vector/ ciao sergio |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 64
|
Ho provato a districarmi negli indici , ma non sono riuscito a tirar fuori un ragno dal buco.
Leggendo a riguardo dei puntatori mi sembra di aver però capito che si agisce sui medesimi array in ingresso? |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Aug 2008
Messaggi: 8
|
In C c'è una strettissima relazione tra puntatori e vettori, tutte le operazioni di indicizzazione su vettori possono essere eseguite anche con i puntatori. Normalmente si suggerisce per i programmatori in erba di utilizzare la indicizzazione, in quanto risulta di più semplice comprensione.
int v[10]; è un vettore di 10 int e v[0] si riferisce al primo elemento di tale vettore, mentre v[9] si riferisce all'ultimo. v è un vettore ed il suo nome ( v ) è in C un sinonimo di puntatore al primo elemento, cioè v è il sinonimo di &v[0]. Allora se p è un puntatore a int int * p; allora posso scrivere p = a; e p è un puntatore al primo elemento del vettore. (p+1) punterà quindi al secondo elemento e *(p+i) sarà equivalente a v[i]. Non posso però scrivere (a+i) in quanto a è un nome di vettore. spero di non averti confuso le idee. ciao sergio |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2006
Messaggi: 64
|
Data la mia notevole esperienza con c++, dopo circa una settimana e dopo innumerevoli abbandoni forzati del computer per stizza, sono riuscito a comprendere le basi su come lavorare su array in funzioni, solamente che ora passando ad array multidimensionali mi trovo in difficoltà nuovamente, a causa delle dichiarazione delle array multidimensionali nella funzione.
USO FUNZIONE ED ARRAY.zip -> come ho risolto il problema (è ok questa cosa?) ARRAY MULTIDIMENSIONALI.zip -> problema con array |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:46.



















