When you declare an array such as 'char a[100]', it allocates 100 chars (bytes) on the stack, and 'a' points to the first char.
When you declare a pointer such as 'char *a', it doesn't point to anything valid initially. You cannot assign anything to '*a' until it references something valid.
What you could do is something like:
char aa[100];
char *a = aa;
*a = '\0';
(I made a similar mistake myself when I was started learning C, and got seg faults too).