Vuoi diventare uno sviluppatore Apple? Con YourLifeUpdated potrai apprendere le basi della programmazione in Objective-C e il design pattern MVC! Parte 7: Passare i parametri alle funzioni, per valore o per riferimento?
Amici di YourLifeUpdated.net benvenuti alla settima lezione della nostra nuova iniziativa e bensì ” Impara a programmare app per iPhone, iPad e Mac con YourLifeUpdated! “.
Abbiamo precedente parlato delle variabili, delle operazioni matematiche e come dichiarare una funzione. Manca un’argomento molto importante, fondamentale in programmazione e cioè come passare i parametri alle funzioni.
I puntatori
Le variabili di tipo puntatore contengono l’indirizzo di altre variabili, oggetti e funzioni. Si dichiarano con la seguente notazione:
int *puntatore;
Notate che va inserito un asterisco tra il tipo ed il nome della variabile, sono valide anche le seguenti dichiarazioni:
int* puntatore;
int * puntatore;
Come si ottiene l’indirizzo di memoria una variabile?
Per ottenere l’indirizzo di memoria di una variabile basta anteporre alla variabile l’operatore “&” ed assegnare il valore alla rispettiva variabile, come nell’esempio:
int a=2; int *puntatore=&a;
Come sono organizzati i dati in memoria? Una dichiarazione del genere:
int a=2;
In memoria verrà rappresentata come 1956875 2, dove il primo valore è l’indirizzo e il secondo è il valore. Per afferrare il concetto effettuate le seguenti prove, utilizzate printf per visualizzare il contenuto delle variabili:
printf("%d", a); // verrà stampato 2 printf("%d", &a); // verrà stampato l'indirizzo di a 1956875 printf("%d", puntatore); // verrà stampato l'indirizzo di a 1956875 printf("%d", *puntatore); // verrà stampato 2 printf("%d", &puntatore); // verrà stampato l'indirizzo del puntatore 1946985
Un esercizio? =D Scrivete una funzione che riceve un puntatore ad intero e ne stampa il valore! Â Passare i parametri ad una funzione per valore o per riferimento? Passare i parametri ad una funzione per valore significa appunto passare il valore della variabile mentre passare i parametri ad una funzione per riferimento significa appunto passare alla funzione l’indirizzo delle variabili. Esempio: Supponiamo di avere due variabili a e b con valori rispettivamente 2 e 3
void func(int a, int b){ a=b; printf("%d", a); } printf("%d", a);
Con prima chiamata a printf verrà visualizzato il nuovo valore di a e cioè 3, mentre con la seconda chiamata (notate che è esterna alla funzione) verrà visualizzato il vecchio valore di a. Quando si passano i parametri ad una funzione per valore  questi verranno modificati solo nell’ambito del corpo della funzione mentre la modifica non avrà effetto all’esterno della funzione. Se invece passiamo i parametri ad una funzione per riferimento lavoreremo con gli indirizzi di memoria e quindi avremo la possibilità di modificare il valore delle variabili. Esempio: Supponiamo di avere due variabili a e b con valori rispettivamente 2 e 3
void func(int *a, int *b){ *a=*b; printf("%d", *a); } printf("%d", *a);
Se eseguite il programma noterete che in entrambe le chiamate a printf verrà visualizzato il valore 3! Infatti la funzione fune riceve sta volta due puntatori a interi e cioè gli indirizzi di memoria di a e b, ci serviamo quindi dell’operatore “*”  per accedere ai valori delle variabili! Esercizio “per casa” ! =D Scrivere una funzione swap che riceve due puntatori ad intero e ne scambia i valori. Non preoccupatevi, ecco la soluzione! main Alla prossima!
Aspetta..Prima di lasciare la pagina leggi qui
YOURLIFEUPDATED È STATO SELEZIONATO DAL NUOVO SERVIZIO DI GOOGLE NEWS: se vuoi essere sempre aggiornato sulle nostre notizie SEGUICI QUI
YOURLIFEUPDATED HA UN CANALE TELEGRAM CHE RACCOGLIE TUTTE LE ULTIME NOTIZIE:Â se vuoi essere sempre aggiornato SEGUICI QUI
YOURLIFEUPDATED HA UN CANALE YOUTUBE CON OLTRE 2500 ISCRITTI, UNISCITI ANCHE TU:Â se vuoi essere sempre aggiornato SEGUICI QUI
HAI BISOGNO DI ASSISTENZA? Unisciti al nostro Gruppo di supporto - CLICCA QUI
NON HAI ANCORA AMAZON PRIME? Attivalo gratis ORA - CLICCA QUI
CERCHI LE MIGLIORI OFFERTE DI AMAZON? Scoprile QUI sempre aggiornate
In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei