/* File: stack.c */

/* Scopo: esemplificazione dei concetti di - pila dei record di attivazione e -
tempo di vita di una variabile */

void B(int q)
{
  printf("Sono la funzione B(). Il mio parametro q vale %d!\n", q);
}

void A (int p)
{
  int l;
  printf("Sono la funzione A(). Il mio parametro p vale %d!\n", p);
  printf("Inserisci un intero: ");
  scanf("%d",&l);
  printf("Ora chiamo la funzione B(), con parametro attuale pari a %d!\n",l);
  B(l);
  printf("Sono di nuovo la funzione A()!\n");
}

int main(void)
{
  int s;
  printf("Sono la funzione main()!\n");
  printf("Inserisci un intero: ");
  scanf("%d",&s);
  printf("Ora chiamo la funzione A(), con parametro attuale pari a %d!\n",s);
  A(s);
  printf("Sono di nuovo la funzione main()!\n");
  return 0;
}

/* OUTPUT

Sono la funzione main()!
Inserisci un intero: 3
Ora chiamo la funzione A(), con parametro attuale pari a 3!
Sono la funzione A(). Il mio parametro p vale 3!
Inserisci un intero: 5
Ora chiamo la funzione B(), con parametro attuale pari a 5!
Sono la funzione B(). Il mio parametro q vale 5!
Sono di nuovo la funzione A()!
Sono di nuovo la funzione main()!

*/
