Buena forma de escribir "puntero a algo" en C / C ++

¿Existe una forma "buena" de escribir "puntero a algo" en C / C ++?
Yo uso para escribirvoid foo( char *str ); Pero a veces me parece bastante ilógico porque el tipo destr es "puntero a char", entonces debería ser más lógico adjuntar el* al nombre del tipo.
Existe una regla para escribir punteros?

char*str;
char* str;
char *str;
char * str;

Respuestas a la pregunta(5)

Su respuesta a la pregunta