什么是intptr_t,它是整数或指针的类型吗?

时间:2011-06-20 11:12:14

标签: c linux

它在/usr/include/stdint.h中定义:

typedef long int                intptr_t;

它应该是整数或指针的类型吗?

2 个答案:

答案 0 :(得分:23)

它是一个有符号整数类型,足以容纳指针。

答案 1 :(得分:2)

这是一个有符号整数类型,保证可以保存void*类型。

为什么还有[u]intptr_t?这是因为:

  

任何指向void的有效指针都可以转换为intptr_tuintptr_t   而且价值没有变化。 C标准   保证指向void的指针可以转换为或来自   指向任何对象类型的指针,然后再返回,结果必须   比较等于原始指针。因此,转换   在支持char *的实现上,允许直接从uintptr_t指针指向uintptr_t