PDA

View Full Version : [C++] Funzioni, valori restituiti


Albitexm
11-07-2009, 00:27
In C++, una funzione può restituire come parametro una matrice? :help:

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.

ybla82
13-07-2009, 16:11
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:

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;
}


Chiamata:

int aiMatrix[2][2];

aiMatrix[0][0] = 1;
aiMatrix[0][1] = 2;
aiMatrix[1][0] = 3;
aiMatrix[1][1] = 4;

ClearMatrix(aiMatrix);

cionci
14-07-2009, 15:13
Non serve passarla per riferimento. L'identificatore della matrice è un puntatore ed il puntatore è passato per valore.

Albitexm
17-07-2009, 19:03
.. L'identificatore della matrice è un puntatore ed il puntatore è passato per valore.

Quindi è passato ?
Quindi viene restituita come valore?

cionci
17-07-2009, 19:41
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.