首頁 >後端開發 >C++ >如何安全地將 void* 指標轉換為 C 中的整數?

如何安全地將 void* 指標轉換為 C 中的整數?

Patricia Arquette
Patricia Arquette原創
2024-11-12 10:52:02700瀏覽

How can I safely convert a void* pointer to an integer in C  ?

將指標轉換為整數

在需要將void* 參數轉換為合適的類型的情況下,至關重要的是確保不同機器架構之間的相容性。

在 64 位元機器上,將 void* 轉換為int 可能會導致精確度損失。為了解決這個問題,現代 C 方法涉及使用reinterpret_cast<:uintptr_t>。這確保了可移植且高效的轉換。

正確的整數類型:

要將指標正確儲存為整數,適當的型別是uintptr_t 或intptr_t,在< 中定義;stdint.h>對於C99或C 11 的std 命名空間。

  • C 11(及以後):std::uintptr_t
  • C 03:uintptr_t(如果需要,用extern "C" { 包裝) })
  • C99: uintptr_t

正確的轉換運算子:

在 C 中,reinterpret_cast 是指標轉換的首選轉換。避免使用 C 類型。

範例:

#include <cstdint>

void *p;
std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);

相關問題:

  • 什麼是uintptr_t 資料型態?

以上是如何安全地將 void* 指標轉換為 C 中的整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn