2010-04-26 34 views
10

Trong nhiều chức năng tìm kiếm của C (tìm kiếm bsearch đến tâm trí) nếu một kết quả được tìm thấy, một con trỏ đến vị trí trong mảng được trả về. Làm thế nào tôi có thể chuyển đổi con trỏ này thành chỉ mục trong mảng được tìm kiếm (sử dụng số học con trỏ, tôi giả định).C - làm thế nào để chuyển đổi một con trỏ trong một mảng thành một chỉ mục?

Trả lời

15
ptrdiff_t index = pointer_found - array_name; 
+0

và nếu các mảng bị loại void, tôi sẽ nhận được cảnh báo biên dịch. do đó, nó không biết làm thế nào để làm phép trừ một cách chính xác. tôi đã kết thúc chuyển đổi cả hai thành (char *), trừ đi, sau đó chia cho kích thước của một phần tử. Tôi không chắc chắn nếu điều đó hoạt động, mặc dù – sepiroth

+1

Không có mảng loại 'void', nhưng có một con trỏ của loại' void'. – AraK

+1

@hatorade truyền con trỏ tới loại phần tử mảng. Ví dụ: 'int arr [..]; void * p = & arr [1]; size_t index = (int *) p - arr; ' – AraK

Các vấn đề liên quan