#include <stdio.h>
main()
{
 char *p, *q;

 printf("文字列を入力>");
 p = gets(q);
 printf(p);
}

これなんですが、どうしてこれでいいのか分かりません。
p = gets(q) の部分なんですが、 *p = gets(*q) なのではないかと思ってしまいます。
あと、printf(p)もprintf(*p)に。
「*p」、「*q」というのはそれぞれアドレスp、アドレスqの内容のことだから、
「アドレスqの内容をアドレスpの内容とする」ってことにした方がいいような気がするんです。
漏れのポインタに対する概念が間違ってるんだと思うんですが、どこが違うんでしょうか?