#include <stdio.h>

struct s {int i; char c;};

struct s * f1(int i)
{
  struct s t;
  t.i = i; 
  return (&t);
}

struct s * f2(int i)
{
  struct s * ps;
  ps = (struct s *) malloc(sizeof(struct s));
  ps->i=i;
  return(ps);
}

struct s f3(int i)
{
  struct s t;
  t.i=i;
  return (t);
}

main()
{
  struct s s1,*ps,t;

  ps = f1(3);
  s1.i=ps->i;
  printf("%d\n", s1.i);

  ps = f2(3);
  s1.i=ps->i;
  printf("%d\n", s1.i);

  t=f3(3);
  s1.i=t.i;
  printf("%d\n", s1.i);
}
