uintptr_t和intptr_t类型究竟有何不同?

2026-04-11 11:150阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

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

uintptr_t和intptr_t类型究竟有何不同?

简介:最近在阅读代码时,发现了两个之前未见过的数据类型:intptr_t 和 uintptr_t。这两个类型是 ISO C99 标准定义的,具体代码在 Linux 平台的 /usr/include/stdint.h 头文件中。

* Types for `void *p`

简介

最近在看代码时,发现了两个之前没见过的数据类型:intptr_tuintptr_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

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

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

阅读全文

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

uintptr_t和intptr_t类型究竟有何不同?

简介:最近在阅读代码时,发现了两个之前未见过的数据类型:intptr_t 和 uintptr_t。这两个类型是 ISO C99 标准定义的,具体代码在 Linux 平台的 /usr/include/stdint.h 头文件中。

* Types for `void *p`

简介

最近在看代码时,发现了两个之前没见过的数据类型:intptr_tuintptr_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

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

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

阅读全文