它在/usr/include/stdint.h
定义:
typedef long int intptr_t;
它应该是一个整数或指针的types?
它是一个有符号整数类型,足够容纳一个指针。
它是一个有符号整数类型,保证可以容纳一个void*
类型。
为什么还有[u]intptr_t
? 因为:
任何有效的指向void的指针都可以转换为
intptr_t
或者uintptr_t
并且返回值不变。 C标准保证指向void的指针可以被转换为指向任何对象类型的指针或者返回,并且结果必须与原始指针相等。 因此,在支持uintptr_t
实现中允许直接从char *
指针uintptr_t
为uintptr_t
。