|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
[C++] Funzioni, valori restituiti
In C++, una funzione può restituire come parametro una matrice?
In un libro sul C++ io leggo: "Una funzione può restituire un qualsiasi tipo di dato, tranne array". Ma al capitolo seguente leggo: "Passaggio di un vettore come parametro a una funzione- nel capitolo precedente è stato affrontato l'argomento del passaggio dei parametri dal main alla funzione. I parametri erano tuttavia dati di tipo semplice, non dati strutturati come un vettore o una matrice.Nel caso in cui i parametri siano array occorre rispettare alcune particolarità sintattiche...". Seguono esempi. Quindi io non ho capito, se posso scrivere una funzione, che mi restituisca una matrice come parametro (si o no?) o se devo scrivere tutte le volte il codice. Ultima modifica di Albitexm : 12-07-2009 alle 02:09. |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: May 2006
Messaggi: 23
|
Se ho capito il tuo problema, dovresti passare la matrice per riferimento, dentro la funzione la modifichi come vuoi, e una volta uscito dalla funzione hai la matrice aggiornata.
Funzione: Codice:
int ClearMatrix(int (&a)[2][2])
{
int iRes = 0;
for(int i= 0; i< 2; i++)
{
for(int j= 0; j< 2; j++)
a[i][j] = 0;
}
return iRes;
}
Codice:
int aiMatrix[2][2]; aiMatrix[0][0] = 1; aiMatrix[0][1] = 2; aiMatrix[1][0] = 3; aiMatrix[1][1] = 4; ClearMatrix(aiMatrix); |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Non serve passarla per riferimento. L'identificatore della matrice è un puntatore ed il puntatore è passato per valore.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E quindi è come se passassi un puntatore ad un'area di memoria già allocata. Se modifichi l'area di memoria anche il chiamante vedrà la modifica perché il valore del puntatore è lo stesso.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:33.




















