请问在C语言中,uintptr_t和intptr_t类型有什么区别和用途?

更新于
2026-10-09 14:28:16
0阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计878个文字,预计阅读时间需要4分钟。

请问在C语言中,uintptr_t和intptr_t类型有什么区别和用途?

简介+最近在查看代码时,发现了两个之前没见过的数据类型:intptr_t 和 uintptr_t。这两个类型是 ISO C99 定义的,具体代码在 Linux 平台的 /usr/include/sys/types.h 头文件中。/* Types for `void *' */

简介

最近在看代码时,发现了两个之前没见过的数据类型:intptr_t,uintptr_t。这两个数据类型是ISO C99定义的,具体代码在linux平台的/usr/include/stdint.h头文件中。

/* 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

为什么会根据不同的位数定义不同的长度呢?

先看下不同的数据类型在不同字长机器上长度大小。

阅读全文

本文共计878个文字,预计阅读时间需要4分钟。

请问在C语言中,uintptr_t和intptr_t类型有什么区别和用途?

简介+最近在查看代码时,发现了两个之前没见过的数据类型:intptr_t 和 uintptr_t。这两个类型是 ISO C99 定义的,具体代码在 Linux 平台的 /usr/include/sys/types.h 头文件中。/* Types for `void *' */

简介

最近在看代码时,发现了两个之前没见过的数据类型:intptr_t,uintptr_t。这两个数据类型是ISO C99定义的,具体代码在linux平台的/usr/include/stdint.h头文件中。

/* 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

为什么会根据不同的位数定义不同的长度呢?

先看下不同的数据类型在不同字长机器上长度大小。

阅读全文