2010-04-26 17 views
10

सी के कई खोज कार्यों में (bsearch दिमाग में आता है) यदि कोई परिणाम मिलता है, तो सरणी में स्थान के लिए एक सूचक वापस लौटा दिया जाता है। मैं इस सूचक को सरणी में इंडेक्स में कैसे परिवर्तित कर सकता हूं जो खोजा गया था (पॉइंटर अंकगणितीय का उपयोग करके, मुझे लगता है)।सी - एक सूचकांक में एक सूचक में एक सूचक को कैसे परिवर्तित करें?

उत्तर

15
ptrdiff_t index = pointer_found - array_name; 
+0

और यदि सरणी प्रकार शून्य हैं, तो मुझे एक संकलन चेतावनी मिलती है। इसलिए यह नहीं जानता कि घटाव को सही तरीके से कैसे करें। मैं दोनों को (char *), घटाना, फिर तत्व के आकार से विभाजित करना समाप्त कर दिया। मुझे यकीन है कि अगर काम करता है नहीं कर रहा हूँ, हालांकि – sepiroth

+1

वहाँ प्रकार का कोई सरणी 'void' है, लेकिन वहां के प्रकार' void' सूचक है। – AraK

+1

@hatorade ने सूचक तत्वों के प्रकार के लिए पॉइंटर डाला। उदाहरण के लिए: 'int arr [..]; शून्य * पी = और एआर [1]; size_t अनुक्रमणिका = (int *) पी - एआर; ' – AraK

संबंधित मुद्दे