假設我正在寫一個函數,它需要一個float a[]
和一個偏移量到這個數組中,並返回該偏移量處的元素。是否合理使用簽名將off_t用於非字節偏移量是否合適?
float foo(float* a, off_t offset);
對嗎?或者是off_t
只與字節的偏移有關,而不是指針運算的元素大小?即當off_t
類型的偏移量時,說a[offset]
是否合理?
GNU C庫參考手冊說:
off_t
This is a signed integer type used to represent file sizes.
,但並沒有告訴我很多。因爲在[offset]中使用的實際地址是+ sizeof(float)* offset的地址,所以「sizeof(float)* offset」是off_t
,並且sizeof(float)是size_t
,並且它們都是具有'維度'的常量。
注:偏移量可能爲負。
很確定訪問指針的負偏移被認爲是惡意的。 – zneak
@zneak:也許,我不打算,但'a [-1]'是完全有效的代碼。 – einpoklum
@zneak一點也不。爲什麼要這樣。 –