簡體   English   中英

將指針地址轉換為 int

[英]Cast pointer address to int

初學者問題:如何獲取指針的地址並將其保存為 int? 例子:

int *ptr = xyz;
int i = static_cast<int>(ptr);

所以如果 ptr 指向內存地址 123,我應該是 123。我的編譯器說這是一個error: invalid static_cast from type 'int*' to type 'int'

猜猜我錯過了什么,但我不知道是什么。

您可以使用reinterpret_cast 但是,不能保證int能夠無損地存儲指針,因此您應該改用std::intptr_t類型。

您還可以使用 C 風格的強制轉換:

int *ptr = xyz;
int i = (int) ptr;

這是一個很好的討論,將 C 樣式轉換與reinterpret_cast進行了比較。

您可以使用以下函數將任何指針作為 unsigned long 獲取。 int 不能保證完成任務。

template <typename T>
static constexpr inline auto ptrToAddr(T *pointer) noexcept
{
  return reinterpret_cast<std::uintptr_t>(pointer);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM