You are currently browsing the daily archive for Agosto 24th, 2008.
Eccoci con un altro post sul linguaggio C++. In questo articolo parlerò degli indirizzi e dei parametri delle funzioni. Come credo sapete, il C++ come il C permette due metodi per passare dei parametri a una funzione: per valore e per indirizzo. Il passaggio di parametri per valore, crea una copia del dato che si sta passando come parametro, di conseguenza non si agisce effettiamente sull’indirizzo in cui risidere il dato. Il passaggio per indirizzo invece, fa lavorare la funzione direttamente sull’indirizzo dove risidere il dato. Il C metteva a disposizione un metodo per far ciò, che era più manuale. Ma il C++, oltre a supportare quella metodologia, usa anche una nuova pratica, che risulta anche meno complessa, più automatica, elegante e semplice. Vediamole con un esempio, l’utilizzo. Non spiego altro, perchè già questo argomento è indirizzato non ai soli principianti, ma agli utenti medi, o comunque a gente che studia seriamente il C++, per cui il codice assortito di commenti dovrebbe bastare a rendere l’idea
#include <cstdlib>
#include <iostream>using namespace std;
void Swap(int &i, int &j);
void SSwap(int *p);int main(int argc, char *argv[])
{
int a, b, c, d, e;a = 1;
b = 2;
c = 3;
d = 4;//Usiamo la funzione Swap() – Stile C++
cout << “A e B: “ << a << ” “ << b << endl;
Swap(a, b);
cout << “A e B con Swap: “ << a << ” “ << b << “\n\n”;cout << “C e D: ” << a << ” ” << b << endl;
Swap(c, d);
cout << “C e D con Swap: “ << c << ” “ << d << “\n\n” << “* * *” << “\n\n”;//Usiamo la funzione SSwap() – Veccio stile C manuale
e = 5;
cout << “E: ” << e << endl;
SSwap(&e);
cout << “E con SSwap: “ << e << endl;getchar();
return EXIT_SUCCESS;
}void Swap(int &i, int &j)
{//esegue un’inversione dei valori tra le variabili
int t;
t = i;
i = j;
j = t;/* Nello stile C++ non abbiamo bisogno di usare l’operatore *, basta dichiarare
i parametri con l’operatore &, e quindi diamo come parametri direttamente gli
indirizzi. */
}void SSwap(int *p)
{//Esegue un’inversione di segno della variabile
*p = -*p;
/* Si noti che in questa funzione dobbiamo dire che come parametro accettiamo
un puntatore. Nell’operare con i dati, abbiamo bisogno di usare l’operatore
*, che indica “all’indirizzo di”, quindi agisce sul valore contenuto dall’indirizzo.
Questo è il contrario di quanto avviene sopra, nello stile del C++ */
}
Si provi a compilare e eseguire il codice
