float a[]
この配列に 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] で使用される実際のアドレスは + sizeof(float) * offset のアドレスであるため、「sizeof(float) * offset」は でありoff_t
、 sizeof(float ) は でありsize_t
、どちらも「次元」を持つ定数です。
注:オフセットは負になる場合があります。