Stavo scrivendo un articolo per il mio blog riguardo al passaggio di parametri per valore e per indirizzo. Mi confermate anche voi che non posso (in nessun modo) effettuare lo swap dei valori di due attributi tramite un metodo?
In C, grazie al passaggio dei parametri per indirizzo posso fare qualcosa del genere:
codice:
#include <stdio.h>
void swap(int *, int *);
int main()
{
int x = 2;
int y = 4;
printf("output: x=%d, y=%d\n", x, y); // output: x=2, y=4
swap(&x, &y); // x e y sono parametri attuali di swap e sono gli indirizzi di x e y
printf("output: x=%d, y=%d\n", x, y); // output: x=4, y=2
return 0;
}
void swap(int *a, int *b) // a e b sono parametri formali di swap di tipo puntatore a intero
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
In Java, il passaggio per indirizzo non esiste. Posso creare un qualcosa di simile o devo per forza di cose sostituire il corpo di swap alla sua chiamata tra le due printf???? Io non vedo soluzioni chiedo a voi...