/* File: stack.c */
/* Time-stamp: "2001-03-26 16:01:36 calvanes" */
/* Scopo: esemplificazione dei concetti di
            - pila dei record di attivazione e
            - tempo di vita di una variabile
*/

#include <stdio.h>


void B(int q)
{
  /* b1 */ printf("Sono B(). Il mio parametro q vale %d\n", q);
  /* b2 */ return;
}


void A (int p)
{
  int loc;

  /* a1 */ printf("Sono A(). Il mio parametro p vale %d\n", p);
  /* a2 */ printf("Inserisci un intero: ");
  /* a3 */ scanf("%d", &loc);
  /* a4 */ printf("Ora chiamo B(), con parametro attuale pari a %d\n", loc);
  /* a5 */ B(loc);
  /* a6 */ printf("Sono di nuovo A()\n");
  /* a7 */ return;
}


int main(void)
{
  int s;

  /* m1 */ printf("Sono main()\n");
  /* m2 */ printf("Inserisci un intero: ");
  /* m3 */ scanf("%d", &s);
  /* m4 */ printf("Ora chiamo A(), con parametro attuale pari a %d\n",s);
  /* m5 */ A(s);
  /* m6 */ printf("Sono di nuovo main()\n");
  /* m7 */ return 0;
}


/* output

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

*/