【问题标题】:how to convert pointer to integer in c?如何在c中将指针转换为整数?
【发布时间】:2021-04-18 10:48:04
【问题描述】:

解决此问题的最简单方法,请展示您的工作

尝试

int x = (int)p

错误

警告:从指针转换为不同大小的整数 [-Wpointer-to-int-cast]

【问题讨论】:

  • 为什么要将指针转换为整数?
  • 我的教授希望我实现自己的 sizeof 版本。
  • 阅读 this C reference 后将 int 替换为 intptr_t。阅读Modern C

标签: c pointers type-conversion integer


【解决方案1】:

使用整数类型保存指针值的最佳方法是使用uintptr_t 类型。

来自C11,第 7.20.1.4 章,

以下类型指定一个无符号整数类型,其属性是任何指向 void 的有效指针都可以转换为该类型,然后转换回指向 void 的指针,结果将与原始指针进行比较:

 uintptr_t

如果您想要一个有符号整数类型,请使用intptr_t

【讨论】:

  • 我得到一个未知类型。 Wut 图书馆这是?
  • 您是否加入了<stdint.h>
  • 我真的不需要把它转换回来。有没有办法抑制警告?
  • Is there was a way to suppress the warning?,是的,通过编写正确的代码。
  • 我的问题可能应该更具体一些,但我不允许使用其他库。但这对我现在有用。
猜你喜欢
  • 2013-04-30
  • 2015-01-06
  • 2012-01-19
  • 1970-01-01
  • 2021-02-13
  • 2011-10-27
相关资源
最近更新 更多