Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* FUNZIONI pt2.
- -INTRO PUNTATORI r8
- -OPERATORI '*' e '&' r25
- -NOTE VARIE r37
- -PASS BY VALUE o BY REFERENCE r54
- */
- //INTRO PUNTATORI
- int main(){
- int variabile = 4;
- int* puntatore_a_variabile; //int* contiene INDIRIZZI a 64 bit (es. 0xFEFEFEFEFEFEFEFE) non int (§)
- puntatore_a_variabile = &variabile; //&variabile NON FA "4"
- cout << "Mi ritrovo un " << variabile
- << " all'indirizzo " << puntatore_a_variabile << endl;
- return 0;
- } //OUTPUT: "Mi ritrovo un 4 all'indirizzo 0x7ffde6e5506c"
- /*
- (§):
- -è una variabile PUNTATORE che PUNTA SOLO a variabili int
- -discorso analogo per char*, float*...
- -ignora per ora cosa significhi void*
- */
- //******************************************************************************
- //OPERATORI '*' e '&': cosa significano?
- int *ZIO = 0xDEADBEEF; //ti crasha se lo fai lol
- ZIO; //CONTIENE INDIRIZZO a un int
- *ZIO; //PUNTA alla var. il cui INDIRIZZO è dentro ZIO
- &ZIO; //DAMMI l'INDIRIZZO della var. ZIO
- *ZIO = 9;
- cout << *ZIO << " si trova in " << ZIO;
- //OUTPUT: "9 si trova in 0xDEADBEEF"
- //******************************************************************************
- //NOTE VARIE:
- char carattere = 'a';
- //3 modi per dichiararli
- char* ptr1a = &carattere; //OK!
- char *ptr1a = &carattere; //Non me gusta ma OK
- char * ptr1c = &carattere; //Orribile ma OK
- char* ptr2; ptr2 = &carattere; //OK!
- *ptr2 = 'b' //OK! Perchè '*ptr == carattere' e 'ptr == &carattere'
- char* ptr3 = carattere; //ERRORE. Fai piuttosto come ho fatto sù
- ptr4 = carattere; //ERRORE. Ambo i casi su Win9x avresti fatto danno :>
- //******************************************************************************
- /*
- PUNTATORI + FUNZIONI: PASS-BY-VALUE & PASS BY REFERENCE
- TL;DR: Vedi il mio esempio pass_by_reference() se vuoi modificare cose dichiarate nel main()
- */
- void pass_by_value(int change_this){
- //Copia 'vote' -> 'change_this'...
- change_this = 9;
- }//...poi però 'change_this' e il '9' vengono distrutti!
- void pass_by_reference(int* ptr){
- //Copia '&vote' -> 'ptr' (ptr == &vote)
- int new_vote = 9;
- *ptr = new_vote; //accedo 'per referenza' e cambio 4 con 9
- }//ptr distrutta MA ora vote == 9!
- //INIZIO
- int main(){
- int vote = 4; int* ptr;
- cout << "Il prof vuole darmi " << vote;
- pass_by_value(vote); //NO FUNZIA.
- cout << " ma io voglio che mi dia " << vote
- << endl;
- //OUTPUT fin qua: "Il prof vuole darmi 4 ma io voglio che mi dia 4"
- //???? WTF
- //se invece facessi...
- cout << "Riprovo. Il prof vuole darmi " << vote;
- pass_by_reference(&vote); //questo FUNZIA!
- cout << " ma io voglio che mi dia " << vote
- << endl;
- //OUTPUT: "Il prof vuole darmi 4 ma io voglio che mi dia 9"
- //Yay.
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement