通过阅读与 size_t 和
ptrdiff_t 相关的帖子,我想确认以下内容:
如果数组的最大大小小于 1/2*(max number represent-able by size_t)
,那么我可以安全地使用 ptrdiff_t
并检查同一对象的两个指针之间的相对距离吗?(由于我在谈论数组,所以“指向同一对象的指针”表示“指向同一数组的指针”)。
如果我想声明一个变量来表示另一个指针的偏移量,我最好将其声明为类型 ptrdiff_t
吗?
如何在 C 和 C++ 中输出类型为 size_t
和 ptrdiff_t
的变量?以下是否正确:交叉平台格式化字符串以处理类型为size_t的变量?
uintptr_t
只是 size_t
的另一个名称,还是应该将其用作与 size_t
不同的单独类型?
ssize_t
和 intptr_t
是否是 ptrdiff_t
的另一种名称,还是必须以不同的方式使用?
我开始在 Ubuntu 上使用 gcc。当使用别人的代码时,我才发现这些类型。
ADDed: 我确实希望能够使用负偏移量。 uintptr_t
和 intptr_t
使用上有任何差异吗?
ssize_t
是一个Posix类型 (例如,在read
和write
的返回类型中使用)。_ptrdiff_t_
看起来像是一个打字错误。 - Mike Seymour