Scusa, ma come pensi di assegnare c? Hai semplicemente definito il puntamento ma non l'area di memoria puntata.
#include <stdio.h>
#include <string.h>
int main ()
{
char spazio_da_allocare_staticamente[64];
char *a,*b,*c;
c=&spazio_da_allocare_staticamente[0];
a="palla";
b="volo";
strcpy (c,a);
strcat (c,b);
printf ("%s\n",c);
getch();
return 0;
}