यदि मेरे पास दो सूचक चर हैं, ए और बी, "< बी" कथन का उपयोग करने का क्या अर्थ है? क्या ऐसा लगता है कि उनके स्मृति पते के मूल्यों की तुलना करना चाहिए? यदि हां, तो कंप्यूटर में मेमोरी पतों का क्रम क्या होगा?संबंधपरक ऑपरेटरों का उपयोग कर पॉइंटर्स की तुलना करने का क्या अर्थ है?
उत्तर
सी और सी ++ में, रिलेशनल ऑपरेटरों का उपयोग करने वाले पॉइंटर्स की तुलना इस मामले में की जाती है, जहां आपके पास एक ही सरणी में दो पॉइंटर्स हैं और उनके रिश्तेदार ऑर्डरिंग देखना चाहते हैं (इस नियम का अपवाद है कि मैं थोड़ा सा उल्लेख करूंगा बिट)। उदाहरण के लिए, मान लें कि p
और q
सरणी arr
के बीच में प्रत्येक बिंदु कहीं, जैसा कि यहाँ दिखाया:
int arr[9];
int* p = &arr[1];
int* q = &arr[4];
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
arr | | | | | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
^ ^
| |
p q
इस मामले में, अभिव्यक्ति p < q
पूछते हैं, "सरणी में सूचकांक है कि तुलना में कम पर p
अंक सरणी में सूचकांक q
अंक? " उपरोक्त संदर्भ में, जवाब "हां" है। यदि p
और q
उलट दिए गए थे, या यदि वे सटीक तत्व पर इंगित करते हैं, तो उत्तर "नहीं" होगा।
सी और सी ++ में भाषा मानकों का कहना है कि एक ही सरणी में इंगित करने वाले पॉइंटर्स की तुलना करने का परिणाम अनिर्धारित नहीं है, जो सहजता से समझ में आता है क्योंकि असंबद्ध वस्तुओं को यादृच्छिक रूप से स्मृति में बहुत यादृच्छिक रूप से बिखराया जा सकता है, या हो इस तरह से संबंधित है कि कार्यान्वयन-निर्भर है (क्या आपका ढेर ऊपर या नीचे बढ़ता है?)
इसका एक अपवाद यह है कि आपको किसी सूचक के तुलना में एक सूचक के एक पॉइंटर की तुलना करने की अनुमति है सरणी। उदाहरण के लिए, इस स्थापना पर एक नज़र डालें:
int arr[9];
int* p = &arr[1];
int* q = &arr[9];
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
arr | | | | | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
^ ^
| |
p q
यहाँ, क्ष सरणी arr
में इंगित नहीं करता है। हालांकि, भाषा की कल्पना आपको सुरक्षित रूप से पी और क्यू की तुलना करने की अनुमति देती है। यही कारण है कि, उदाहरण के लिए, आप सुरक्षित रूप से इस इटरेटर शैली पाश C++ का उपयोग कर सकते है:
for (int* itr = arr; itr != arr + /* arr's size */; itr++) {
...
}
जोड़ने के लिए: "... उस मामले में जहां आपके पास एक ही सरणी _or object_ में दो पॉइंटर्स हैं"। यह सरणी चर्चा एक ऑब्जेक्ट पर भी लागू होती है जैसे कि यह एक सरणी थी। 'some_type x;' 'और x + 1> और x' अच्छी तरह परिभाषित है। §6.5.8 4 – chux
आप पॉइंटर्स की तुलना उसी समेकित ऑब्जेक्ट के सदस्यों से भी कर सकते हैं, उदाहरण के लिए, एक ऑब्जेक्ट में 'डबल बी' के सूचक के साथ एक स्ट्रक्चर ऑब्जेक्ट में 'int a' के लिए एक पॉइंटर। –
@EricPostpischil मुझे नहीं पता था कि आप ऐसा कर सकते हैं। मुझे लगता है कि सख्त एलियासिंग उल्लंघनों से बचने के लिए आपको विभिन्न प्रकार की वस्तुओं में 'char *' पॉइंटर्स के कुछ स्वाद का उपयोग करने की आवश्यकता है? – templatetypedef
- 1. इन ऑपरेटरों का क्या अर्थ है (**, ^,%, //)? - पायथन?
- 2. एबीएपी ऑपरेटरों में = = का क्या अर्थ है?
- 3. संबंधपरक ऑपरेटरों मूल्यांकन परिणाम
- 4. तुलना datetimes: DateTime.Compare() संबंधपरक ऑपरेटर
- 5. "===" का क्या अर्थ है?
- 6. पायगलेट का उपयोग करने की कोशिश कर रहा है - इस त्रुटि का क्या अर्थ है?
- 7. ऑपरेटरों को सी ++ पॉइंटर्स
- 8. फ़ंक्शन पॉइंटर्स का उपयोग क्या है?
- 9. बिटवाई ऑपरेटरों का उपयोग कर सशर्त वक्तव्य
- 10. '\ 0' का क्या अर्थ है?
- 11. स्कैला के पैटर्न मिलान प्रणाली में तुलना ऑपरेटरों का उपयोग
- 12. सी # पॉइंटर्स का उपयोग
- 13. कुछ "बंद" करने का क्या अर्थ है?
- 14. क्या/proc की सामग्री का अर्थ है/
- 15. स्थानांतरण की अवधारणा का क्या अर्थ है?
- 16. इंटरप्ट अक्षम करने का क्या अर्थ है?
- 17. टेक्स्ट का उपयोग किए बिना रूबी ऑपरेटरों का अर्थ मुझे कैसे मिल सकता है?
- 18. सॉकेट फ्लश करने का क्या अर्थ है?
- 19. 'मूल्य प्रारंभ करने' का क्या अर्थ है?
- 20. उपयोग विधि का अर्थ क्या है?
- 21. {} का क्या अर्थ है?
- 22. क्या CGPoints की तुलना करने का कोई तरीका है?
- 23. "वाणिज्यिक उपयोग" का क्या अर्थ है?
- 24. __stdcall का अर्थ और उपयोग क्या है?
- 25. दूर फ़ंक्शन पॉइंटर्स का उपयोग
- 26. int.class का अर्थ क्या है
- 27. यूनरी प्लस और माइनस ऑपरेटरों का महत्वपूर्ण उपयोग क्या है?
- 28. इस ऑपरेटर का क्या अर्थ है?
- 29. ओआरएम का क्या अर्थ है?
- 30. संबंधपरक पैरामीट्रिकिटी क्या है?
मुझे लगता है कि कुछ इस तरह बहुत भाषा विशिष्ट हो जाएगा। कुछ बेवकूफ मामलों में पॉइंटर्स शब्दशः (या जैसा व्यवहार किया जा सकता है) स्मृति स्थान हैं। अन्य मामलों में वे एक बहुत ही विशिष्ट प्रकार हैं, और ऑपरेटरों के पास विशिष्ट विशिष्ट व्यवहार होगा। – jdv
संबंधित [यह देखते हुए कि पी एक सूचक है "p> nullptr" अच्छी तरह से गठित?] (Https://stackoverflow.com/q/26590267/1708801) –
मेरा जवाब [यूआर होने के लिए एक सरणी के बाहर सूचक तुलना के लिए तर्क ] (https://stackoverflow.com/a/31151779/1708801) भी संबंधित है। –