No. The two forms are equivalent, there is no conversion or "decay".
That is something that happens when a function is called, not when
declared. Actually, it's that the name of an array is implicitly
converted to a pointer in most cases, exceptions including the
address-of operator and the sizeof operator.
If a size is included in a declaration, it's ignored, so:
void f(char *p);
void f(char p);
void f(char p1000]);
Are all equivalent declarations.
The only other place char is legal is when used as a declaration with
an initializer, no conversion there either.