gpt4 book ai didi

c++ - 非字节偏移使用 off_t 合适吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:05 27 4
gpt4 key购买 nike

假设我正在编写一个函数,它将一个float a[] 和一个偏移量放入该数组中,并返回该偏移量处的元素。使用签名是否合理

float foo(float* a, off_t offset);

为了它?还是 off_t 仅与字节偏移量相关,而不与具有任意元素大小的指针算法相关?即当 offset 的类型为 off_t 时,说 a[offset] 是否合理?

GNU C 库引用手册说:

off_t
This is a signed integer type used to represent file sizes.

但这并不能告诉我太多。

我的直觉是答案是否定的,因为 a[offset] 中使用的实际地址是 a + sizeof(float) * offset 的地址,所以 "sizeof(float) * offset"是一个 off_t,而 sizeof(float) 是一个 size_t,两者都是具有“维度”的常量。

注意:偏移量可能为负。

最佳答案

您为什么不使用 int 有什么充分的理由吗?这是C++ 中整数值的默认类型,应该使用除非有充分的理由不这样做。

当然,一个很好的理由是它可能会溢出。如果上下文是这样的,你最终可能会得到非常大的数组,你可能想使用 ptrdiff_t,它被定义(在C 和 C++) 作为减去两个结果的类型指针:换句话说,它保证不会溢出(当用作偏移量)对于大小大于 1 的所有类型。

关于c++ - 非字节偏移使用 off_t 合适吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17649167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com