C/C++ だとポインタを表す * や参照の & は型の一部なのに宣言の文法としては変数名のほうに結合するという変なことにしたせいで後々まで引きずる大混乱を産んでしまった。
後継 (的なポジション) の Rust や Go、nim、Zig などはいずれもポインタ (や参照) は型の一部として表記するようなスタイルを取っているのは C/C++ の反省からだと思う。