2013-05-30 25 views

回答

4

如果你肯定知道的元素是數組,那麼是的,這很簡單:

position = the_pointer - the_array; 
// or 
position = &the_reference - the_array; 

如果你是不知道,如果元素是陣列的一部分,那麼這樣做可能是未定義的行爲。

沒有(標準的認可的)方法來告訴你有一個指針或引用的對象是數組的一部分。所以,如果你沒有訪問數組,或者不確定它是哪個數組的一部分,那麼你的運氣不好。

+0

謝謝你的幫助! – user1780800

1

如果數組地址可用,則可以使用指針算術。

int t[3] = { 1, 2, 3 }; 
int *p = t + x; /* Where `x` is the given offset */ 

然後:

#include <stddef.h> 

ptrdiff_t y = p - t; 

接着,y應等於x