View Full Version : [C++] Array e funzione
Mattiatn
15-09-2008, 16:06
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?
sebaldar
15-09-2008, 21:55
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
Mattiatn
17-09-2008, 15:21
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?
sebaldar
17-09-2008, 22:13
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
Mattiatn
23-09-2008, 11:35
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.