假设我正在编写一个函数,该函数将一个float a[]
和一个偏移量写入此数组,并返回该偏移量处的元素。使用签名是否合理
float foo(float* a, off_t offset);
为了它?还是off_t
仅与字节偏移有关,而不是与任意元素大小的指针算术有关?a[offset]
即当偏移量是类型时说它是合理的off_t
吗?
GNU C 库参考手册说:
off_t
This is a signed integer type used to represent file sizes.
但这并不能告诉我太多。
我的直觉是答案是否定的,因为 a[offset] 中使用的实际地址是 a + sizeof(float) * offset 的地址,所以 "sizeof(float) * offset" 是 an off_t
,而 sizeof(float ) 是 a size_t
,并且两者都是具有“维度”的常数。
注意:偏移量可能为负数。