int型のポインタとchar型のポインタは違う型のため、同じものとして扱うことは出来ません。 ですが、実際にはポインタ型はメモリ上の特定アドレスを示すもののため、 どの型のポインタであっても、データ自体はメモリ上のアドレスを示す何bitかの数値であり、全く同じです。 (勿論、ポインタの示すアドレスに何があるかは異なります) そのため、ポインタ専用の変数を利用することで、あらゆる型のポインタを同じ変数に代入することができます。 ただし、コンパイラの型チェックが効かなくなる等の理由から、基本的にはオススメできない手法です。 C++の場合はテンプレートやクラスの継承、dynamic_castで解決できる場合はそちらを利用した方が安全です。 汎用ポインタ void *型は汎用ポインタと呼ばれ、あらゆるポインタを代入することができます。 これはたとえば以下のように、何の型かは指定しないけど、変数とし