我有一个 malloc'ed 指针数组,它形成了一个哈希表。要遍历哈希表,我会使用指针算法,例如:
node_t ** tc = table;
size_t tcs = sizeof(node_t *);
for(long i = 0; i < tableSize; tc+=tcs, ++i) {
// Do some stuff with *tcs location in the table.
}
问题是我是否应该将 sizeof()
返回的 size_t
转换为 ptrdiff_t
以便在 的增量部分正确添加对于
条件?或者它甚至对添加有影响吗?
最佳答案
您需要 ptrdiff_t
来处理负值。 size_t
处理正值,例如您示例中 sizeof
的结果,因此您不需要强制转换。
话虽如此,代码看起来很可疑:C 编译器将 struct
的大小考虑到您的指针算法中,因此您必须添加 sizeof(node_t*)
指向 node_t
的双指针可能是一个错误。如果要前进到指针数组中的下一个指针,请将 1
添加到该指针的当前值。编译器足够聪明,可以根据指针的类型将 1
乘以 sizeof(*ptr)
。
关于c - 我应该将 size_t 转换为 ptrdiff_t 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286220/