|
|
|
![]() |
|
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 01: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: 20:36.