Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menukar penuding void* kepada integer dalam C dengan selamat?
Menukar Penunjuk kepada Integer
Dalam situasi di mana hujah void* perlu ditukar kepada jenis yang sesuai, adalah penting untuk memastikan keserasian merentas seni bina mesin yang berbeza.
Pada mesin 64-bit, menghantar kekosongan* kepada int boleh mengakibatkan kehilangan ketepatan. Untuk menangani perkara ini, pendekatan C moden melibatkan penggunaan reinterpret_cast
Jenis Integer Betul:
Untuk menyimpan penuding sebagai integer dengan betul, jenis yang sesuai ialah uintptr_t atau intptr_t, ditakrifkan dalam < ;stdint.h> untuk C99 atau ruang nama std untuk C 11.
Operator Casting Betul:
Dalam C , reinterpret_cast ialah cast pilihan untuk penukaran penuding. Elakkan menggunakan pelakon C.
Contoh:
#include <cstdint> void *p; std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
Soalan Berkaitan:
Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar penuding void* kepada integer dalam C dengan selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!