intptr_t 指针

Posted 哈哈哈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了intptr_t 指针相关的知识,希望对你有一定的参考价值。

对于64为系统:

typedef  signed char  int8_t;

typedef short int int16_t;

typedef int int32_t;

# if __WORDSIZE==64

typedef long int int64_t;

#else 

typedef long long int  int64_t;

intptr_t 的定义:

/* Types for `void *\' pointers. */
#if __WORDSIZE == 64
# ifndef __intptr_t_defined
typedef long int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned long int uintptr_t;
#else
# ifndef __intptr_t_defined
typedef int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned int uintptr_t;
#endif

 

可以看出指针用来保存变量或常量的地址,地址由处理器的位数决定。Windows 程序中的句柄就是一个地址。intptr_t 在不同平台上不一样,始终与地址位数相同,用来存放地址。。

使用intptr_t 来保证平台的通用性,在不同平台上编译的长度不同。

以上是关于intptr_t 指针的主要内容,如果未能解决你的问题,请参考以下文章

对于intptr_t和uintptr_t的理解

C指针(2):指针的长度和类型

使用 intptr_t 代替 void*?

指针是指向 LSB 还是 MSB?

如何将 intptr_t 转换为字符串 [重复]

关于 uintptr_t和intptr_t 类型