uintptr_t(3type)

uintptr_t3type

Integer types wide enough to hold pointers

Part of intptr_t(3type).

Usage

#include <stdint.h>

typedef /* ... */ intptr_t; typedef /* ... */ uintptr_t;

#define INTPTR_WIDTH /* ... */ #define UINTPTR_WIDTH INTPTR_WIDTH

#define INTPTR_MAX /* 2**(INTPTR_WIDTH - 1) - 1 */ #define INTPTR_MIN /* - 2**(INTPTR_WIDTH - 1) */ #define UINTPTR_MAX /* 2**UINTPTR_WIDTH - 1 */

Library

Standard C library (libc)

Overview

intptr_t is a signed integer type such that any valid (void *) value can be converted to this type and then converted back. It is capable of storing values in the range [INTPTR_MIN, INTPTR_MAX].

uintptr_t is an unsigned integer type such that any valid (void *) value can be converted to this type and then converted back. It is capable of storing values in the range [0, UINTPTR_MAX].

The macros [U]INTPTR_WIDTH expand to the width in bits of these types.

The macros [U]INTPTR_MAX expand to the maximum value that these types can hold.

The macro INTPTR_MIN expands to the minimum value that intptr_t can hold.

The length modifiers for the [u]intptr_t types for the printf(3) family of functions are expanded by the macros PRIdPTR, PRIiPTR, and PRIuPTR (defined in <inttypes.h>); resulting commonly in %"PRIdPTR" or %"PRIiPTR" for printing intptr_t values. The length modifiers for the [u]intptr_t types for the scanf(3) family of functions are expanded by the macros SCNdPTR, SCNiPTR, and SCNuPTR (defined in <inttypes.h>); resulting commonly in %"SCNuPTR" for scanning uintptr_t values.

Notes

The following header also provides these types: <inttypes.h>.

Releases

3 releases since Debian 12 (Bookworm); the text changed 2 times.

  1. 12
  2. 13
  3. Arch

Standards

[u]intptr_t[U]INTPTR_MAXINTPTR_MIN

C23, POSIX.1-2024.

[U]INTPTR_WIDTH

C23.

History

[u]intptr_t

SUSv2, C99, POSIX.1-2001 XSI.

[U]INTPTR_MAXINTPTR_MIN

C99, POSIX.1-2001 XSI.

[U]INTPTR_WIDTH

C23.

From man-pages 6.19-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.