Что такое intptr_t, это тип для целого числа или указатель? - PullRequest
12 голосов
/ 20 июня 2011

Это определено в /usr/include/stdint.h:

typedef long int                intptr_t;

это тип целого числа или указатель?

Ответы [ 2 ]

23 голосов
/ 20 июня 2011

Это целочисленный тип со знаком, который достаточно большой, чтобы содержать указатель.

2 голосов
/ 17 августа 2017

Это целочисленный тип со знаком, который гарантированно может содержать тип void*.

И почему существует также [u]intptr_t?Потому что:

Любой действительный указатель на void можно преобразовать в intptr_t или uintptr_t и обратно без изменения значения.Стандарт C гарантирует, что указатель на void может быть преобразован в или из указателя на любой тип объекта и обратно и что результат должен сравниваться равным исходному указателю.Следовательно, преобразование напрямую из указателя char * в uintptr_t разрешено в реализациях, которые поддерживают uintptr_t.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...