2013-01-19 42 views
1

我有一個關於查找索引的問題。c編程索引

假設我在一個數組中有一個「相對」索引(分配給malloc),或者基本上是一個索引,它並不告訴我我在哪裏。我怎樣才能找到「絕對」指數? 我想使用二進制搜索來找到一個數組中的數字,但我也需要索引,當我用遞歸做這件事時,我放鬆了實際的索引。

我在想,因爲它是一個數組,也許我可以減去大小或東西(假設它是一個整數數組),以弄清楚從開始時我做了多少步驟,但我無法弄清楚。你能幫我嗎?

+1

什麼是「絕對索引」?是'a [0]'相對還是絕對索引? –

+0

malloc()將地址保存在一個安全的地方(並將該值傳遞給其他函數) – pmg

+0

絕對索引我的意思是從數組開始的「距離」。相對意味着來自陣列中某個其他位置的「距離」。 – littlerunaway

回答

2

假定由相對索引你指的是陣列內的指針,就可以得到其使用指針運算偏移:

int *array = malloc(100*sizeof(int)); 
// Let's say you've got a pointer to an array element somehow, 
// through your recursive search or in any other way. 
// I'll assign it directly for simplicity: 
int *ptr = &array[23]; 
int absIndex = ptr - array; // This equals 23 

與分割出sizeof數組元素爲你的編譯器的交易,所以如果你的數組元素是雙精度,字符,結構或其他任何東西,減法的結果不會改變。雖然,ptrarray的指針類型需要匹配。

+0

這就是我正在考慮的事情。是否可以用指針來做到這一點?像「absindex =&array [23] -array」? – littlerunaway

+1

@littlerunaway你爲什麼要那樣做?你已經擁有'23'中的「絕對」索引。 –

+0

@JoachimPileborg這只是一個如何獲得指針的例子。由於OP沒有給我他的搜索功能的簽名,我需要在示例中使用* some *初始化。 – dasblinkenlight