You might want to have a look at Dawei's page on pointers,
here. Among other things, this page explains that declaring a pointer only declares the pointer. It does not magically, implicitly, or otherwise create something for that pointer to point at.
Or, to put it another way, if you don't explicitly initialise your pointer, it points at a random area of memory. So copying data to it (which strcpy() does to its first argument) is incredibly dangerous.