Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Precisazione sulle funzioni (istruzione return)

    Salve ragazzi sono nuovo da queste parti
    Sono alle prime armi con java quindi sono piuttosto inesperto a riguardo.

    Volevo chiedervi una precisazione sulle funzioni.
    Allora:
    Io so che una variabile è visibile dal momento in cui si dichiara fino alla fine del blocco in cui è stata dichiarata.

    Ma, in una funzione, dopo l'istruzione
    return valoredaritornare; ( dove "valoredaritornare" puo essere una variabile o un valore inserito a mano), la funzione termina, ma questo terminare cosa significa esattamente? significa in un certo senso che il blocco è stato eseguito completamente e quindi è stata superata la parentesi graffa di quel blocco dico bene ???
    Quindi le variabili contenute in quel blocco di quella funzione, dopo l'istruzione return cesseranno di esistere...
    Quindi se nel mio programma principale richiamo un altra volta la stessa funzione, tutte le variabili che ci sono in quel blocco verranno ricreate un altra volta nello stack della memoria per poi ancora una volta essere cancellate dallo stack stesso non appena viene incontrata l'istruzione return, giusto?

    Se ho capito bene il return, oltre a ritornare il valore della funzione, fa terminare la funzione e quindi ci fa uscire dal blocco della funzione uccidendo (elimimando dallo stack) tutte le funzioni all'interno di questo blocco..
    Le eliminica perche è come se ci facesse saltare fuori direttamente dal blocco superando la parentesi graffa di chiusura del blocco

    ho capito bene?
    Grazie

  2. #2
    Hai capito bene.
    Infatti le variabili che dichiari nella funzione sono dette variabili locali, perchè si riferiscono proprio a quel blocco.
    Quando la funzione termina i loro valori vanno persi (se sono variabili semplici e non oggetti), a meno che non vengano ritornati, e quando esegui nuovamente la funzione vengono ri-inizializzate.
    Ciao! =)
    Please, don't leave any threads alive

  3. #3
    Grazie per la risposta.
    Ho fatto questa domanda perche se siamo nella procedura main e sempre da questa procedura effettuiamo una chiamata di una funzione (ma anche di una procedura), quando il risultato di quest ultima ci torna indietro, tutte le variabili locali della procedura main tornano ad essere visibili con i loro valori esattamente identici (a quelli prima di aver effettuato la chiamata). All'inizio non capivo come poteva essere possibile, poi ci ho riflettuto un attimo ed ho capito il perche...

    quando dalla procedura main facciamo una chiamata di una funzione o di una procedura, una volta che quest'ultima termina e che quindi torniamo nella procedura main esattamente dal punto in cui abbiamo fatto la chiamata... tutte le variabili sono visibili con lo stesso valore perche effettivamente noi il blocco della procedura di main NON lo abbiamo ancora terminato
    motivo per il quale le variabili non hanno perso il loro valore.

    Mentree quando siamo in una funzione o in una procedura, mettendo l'istruzione return;
    è vero che esattamente da quel punto in cui abbiamo messo il return noi terminiamo la procedura o funzione. ma è anche vero che il return ci fa terminare la procedura o funzione proprio come se avessimo superato la parentesi graffa di chiusura del blocco (quindi la fine del bloccco). E percio' tutte le variabili all interno di esso, puff.... moriranno.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.