ポインタの宣言周りは代表的なC言語の欠陥

掛け算と同じ*を使う
&や逆参照の*が紛らわしい
型ではなく変数名に*をつける

まだプログラムの文法とか機能がよく考察されてない頃に適当に考えて普及しちゃったのでしょうがない

C#とかでは型を重視するのでint* p,qは両方ポインタになる
注意がいるけど、C#でポインタを使うのはまれだし、かなり制限が厳しいので勘違いしてもコンパイルエラーで気づけるって判断だろうな