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)