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

    [C] Funzioni

    salve a tutti sono uno studente universitario di informatica e tra meno di un mese ho un esame sul linguaggio C... ho cominciato a studiare da 5 giorni quindi le mie prime domande saranno banali.

    sono sulle funzioni, ho capito bene la sintassi per la dichiarazione, però li dove mi blocco è quando devo dare il valore di ritorno nella funzione vera e propria.

    la variabile che andiamo ad assegnare nella funzione, deve avere poi la sua inizializzazione nel main()?

    qualcuno mi posta qualche semplice esempio?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [C] Funzioni

    Originariamente inviato da marcusbasic
    salve a tutti sono uno studente universitario di informatica e tra meno di un mese ho un esame sul linguaggio C... ho cominciato a studiare da 5 giorni quindi le mie prime domande saranno banali.

    sono sulle funzioni, ho capito bene la sintassi per la dichiarazione, però li dove mi blocco è quando devo dare il valore di ritorno nella funzione vera e propria.

    la variabile che andiamo ad assegnare nella funzione, deve avere poi la sua inizializzazione nel main()?

    qualcuno mi posta qualche semplice esempio?
    Non ho compreso bene la tua perplessita' ... forse e' meglio ragionare su un esempio

    codice:
    int funzione(int x)
    {
      return(x+2);
    }
    
    void main()
    {
      int z;
    
      z = funzione(8);
    }
    Cosa non comprendi di queste righe?


    P.S. Hai cominciato da 5 giorni e tra un mese devi conoscere il C partendo da zero ... Forse avresti dovuto iniziare un po' prima ...

  3. #3
    prima di tutto ti ringrazio per la disponibilità tipo tutor...


    int funzione(int x)
    {
    return(x+2);
    }

    void main()
    {
    int z;

    z = funzione(8);
    }

    allora sto cercando di mettere bene in testa come si fa una dichiarazione, una definizione e un'invocazione...

    in questo caso se ho ben capito nel main() abbiamo l'invocazione che sarebbe
    z = funzione(8);

    il nome "funzione" ci riporta alla sua definizione in
    int funzione(int x)
    che ci ritorna x+2 (ovvero incrementare di 2 la x)

    ma noi il valore di "x" dove lo abbiamo dichiarato?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da marcusbasic
    prima di tutto ti ringrazio per la disponibilità tipo tutor...

    int funzione(int x)
    {
    return(x+2);
    }

    void main()
    {
    int z;

    z = funzione(8);
    }

    ...

    ma noi il valore di "x" dove lo abbiamo dichiarato?
    In questo caso x e' detto "parametro formale" in quanto serve a rappresentare all'interno della funzione, il valore che assumerà, di chiamata in chiamata, attraverso l'assegnazione del "parametro attuale", nel nostro caso 8.

    A runtime, il valore 8 (parametro attuale) viene assegnato alla x (parametro formale) e con quel valore viene eseguito il codice all'interno della funzione. Questa eseguirà la riga

    return(8+2);

    Se chiamata nuovamente con altro valore, ad esempio

    codice:
    void main()
    {
      int z;
    
      z = funzione(8);
    
      z = funzione(15);
    }
    la seconda volta, viene assegnato dal runtime il valore 15 alla x e con quel valore lavora.

    Per assegnare il parametro attuale a quello formale, il compilatore genera il codice adeguato che si serve dello stack. In pratica genera del codice tipo

    Push 8 (inserisce 8 nello stack)
    Call funzione (passa ad eseguire la funzione)

    e nella funzione

    Pop x (preleva un valore dallo stack e lo inserisce nella x)
    ... (lavora con la x)

  5. #5
    troppo gentile, se nn ci sono problemi proverò a postarti i miei singoli dubbi... anche se al momento sono molto elementari

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 © 2025 vBulletin Solutions, Inc. All rights reserved.