Mini teste 16 extra: Programação Recursiva

Considere o programa a seguir

#include <stdio.h>
#include <string.h>

int func(char *p)
{
  int c;

  c = 0;
  if (*p == '\0')
    return(0);
  else
   { 
     p++;
     return(1 + func(p));
   }
}

void main()
{
  char a[20];

  strcpy(a, "Ola");
  printf("%d", func(a));
}

1. Qual será o output do programa?

2. Quantas cópias da variávl c existem no máximo?