*に変換する場合も、その逆の場合も、32bitだと問題なく動くことが多いため、コンパイラもエラーにしない場合が多いです。*を利用して保持したい場合、前の例のように、int型を保持するオブジェクトを作り、その中に値を入れた上で、そのオブジェクトへのポインタを持たせる必要があります。*にint型(やその他のプリミティブ型)を代入する不届き者がいます。*はポインタのため、32bit環境ではvoid*は32bitであり、intも基本的には32bitで同じサイズのため、32bit環境に限れば問題なくコンパイル、実行が出来ます。*は64bitのため、intが32bitの場合は足りない分が消滅します。対応しようとした時に大量のエラーに悩まされることになります...このような場合は最初に述べたとおり、オブジェクトを作ってそのポインタを利用しましょう。上記の例は32bitを64bitにしてから32bitに戻すため、キャストの仕様によっては問題なく動きます。以下のようにポインタをintにキャストした場合、64bit環境かつintが32bitの場合、intに入りきらない部分が消滅してしまうため、ポインタに戻しても正しく戻すことができません。string);この場合、メモリ破壊などといった特定しにくいエラーを引き起こすため、注意が必要です。例によってポインタとintサイズが同一の環境では問題なく動くため、そうでない環境に対応しようとした場合に悩まされる事になります。それ以外にも、ポインタに対して演算を行いたい場合に、int型に変換して計算をする場合があります。このような場合は、intptr_tかuintptr_tというポインタを扱う整数型が用意されており、こちらを使うことで32bitや64bitに適したサイズに変換されて扱うことができます。ota42yC++/Ruby/RoR/golang/rust/flutter。