它在/usr/include/stdint.h
中定义:
typedef long int intptr_t;
它应该是整数或指针的类型吗?
答案 0 :(得分:23)
它是一个有符号整数类型,足以容纳指针。
答案 1 :(得分:2)
这是一个有符号整数类型,保证可以保存void*
类型。
为什么还有[u]intptr_t
?这是因为:
任何指向void的有效指针都可以转换为
intptr_t
或uintptr_t
而且价值没有变化。 C标准 保证指向void的指针可以转换为或来自 指向任何对象类型的指针,然后再返回,结果必须 比较等于原始指针。因此,转换 在支持char *
的实现上,允许直接从uintptr_t
指针指向uintptr_t
。