La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Funzioni in C++ Passaggio di parametri per indirizzo.

Presentazioni simili


Presentazione sul tema: "Funzioni in C++ Passaggio di parametri per indirizzo."— Transcript della presentazione:

1 Funzioni in C++ Passaggio di parametri per indirizzo

2 2 Il passaggio di parametri per indirizzo (o per riferimento) passa alla funzione lindirizzo di memoria del parametro anziché il valore. Non ci sono quindi variabili distinte, una nel main ed una nella funzione, ma la funzione opera sulla stessa area di memoria del main. Data la variabile intera A per sapere qual è lindirizzo di memoria di A si usa loperatore &. Passaggio di parametri per indirizzo Osserviamo le istruzioni seguenti: int A; int A; A=5; A=5; cout <

3 3 Passaggio di parametri per indirizzo Vediamo il seguente esempio in cui la funzione aggiungi aggiunge 1 ai due parametri ricevuti. Il primo parametro viene passato per valore il secondo per indirizzo. void aggiungi(int, int &); int main() {int a,b; a=0;b=5; aggiungi(a, b); cout<

4 /* Scambio del valore di due variabili mediante valore */ #include #include using namespace std; /* Scambio riceve due parametri di tipo float */ void Scambio(float, float ); void Scambio(float, float ); // prototipo int main() { float var1 = 3.14, var2 = 1.41; float var1 = 3.14, var2 = 1.41; // variabili locali cout << "Prima dello scambio: var1 = " << var1 << " var2 = " << var2 << endl; cout << "Prima dello scambio: var1 = " << var1 << " var2 = " << var2 << endl; // A Scambio sono passati i valori contenuti in var1 e var2 Scambio (var1, var2); Scambio (var1, var2); // chiamata di funzione cout << "Dopo lo scambio....: var1 = " << var1 << " var2 = " << var2 << endl; cout << "Dopo lo scambio....: var1 = " << var1 << " var2 = " << var2 << endl;} // Funzione Scambio che effettua lo scambio void Scambio(float x, float y) { float temp = x; float temp = x; x = y; x = y; y = temp; y = temp;} Passaggio di parametri per valore RAM MAINFUNZIONE var1var2 x y temp temp / 1.41 / Prima dello scambio....: var1 = 3.14 var2 = 1.41 Dopo lo scambio....: var1 = 3.14 var2 = 1.41 Schermo

5 RAM MAINFUNZIONE var1var2 x y temp temp 5 /* Scambio del valore di due variabili mediante indirizzo */ #include #include using namespace std; /* Scambio riceve due reference a variabili di tipo float */ void Scambio(float &, float &); void Scambio(float &, float &); // prototipo int main() { float var1 = 3.14, var2 = 1.41; float var1 = 3.14, var2 = 1.41; // variabili locali cout << "Prima dello scambio: var1 = " << var1 << " var2 = " << var2 << endl; cout << "Prima dello scambio: var1 = " << var1 << " var2 = " << var2 << endl; // A Scambio sono passati gli indirizzi a var1 e var2 Scambio (var1, var2); Scambio (var1, var2); // chiamata di funzione cout << "Dopo lo scambio....: var1 = " << var1 << " var2 = " << var2 << endl; cout << "Dopo lo scambio....: var1 = " << var1 << " var2 = " << var2 << endl;} // Funzione Scambio che effettua lo scambio void Scambio(float &x, float &y) { float temp = x; float temp = x; x = y; x = y; y = temp; y = temp;} Passaggio di parametri per indirizzo / / Prima dello scambio....: var1 = 3.14 var2 = 1.41 Dopo lo scambio....: var1 = 1.41 var2 = 3.14 Schermo

6 6 Passaggio di parametri con i vettori Nel caso dei vettori lindirizzo di memoria in cui il vettore è allocato è indicato con il nome del vettore. Nel caso dei vettori il passaggio di parametri per indirizzo è lunico utilizzabile

7 7 ESERCIZIO : diagramma di struttura Altezze degli alunni di una classe Inserire le altezze in un vettore Calcolare la media delle altezze Contare quanti alunni superano la media Risolviamo il seguente problema: Date le altezze di 30 alunni di una classe, calcolare laltezza media e stabilire quanti sono gli alunni che superano la media

8 8 // prototipi delle funzioni void inserisci(int v[],int); float calcolamedia(int v[],int); void contaaltezze(int v[],int,float); int main() { int const max=30; int vett[max]; float media; inserisci(vett,max);media=calcolamedia(vett,max);contaaltezze(vett,max,media);} void inserisci(int v[],int dim) // carico il vettore { for (int i=0;i>v[i]; cin>>v[i]; }} float calcolamedia(int v[],int dim) //calcolo la media {float s,m; for (int i=0;im) if (v[i]>m) conta++; conta++; } cout<<"\ngli alunni che superano la media sono "<


Scaricare ppt "Funzioni in C++ Passaggio di parametri per indirizzo."

Presentazioni simili


Annunci Google