WinAPI में पॉइंटर के समानार्थी 'हैंडल' है? - खिड़कियां, winapi, हैंडल

मैं खिड़कियों पर कुछ किताबें पढ़ रहा हूंहाल ही में सी ++ में प्रोग्रामिंग, और मुझे WinAPI में आवर्ती अवधारणाओं में से कुछ की कुछ भ्रमित समझ है। उदाहरण के लिए, हैंडल कीवर्ड "एच" से शुरू होने वाले कई डेटा प्रकार हैं, क्या इन्हें पॉइंटर्स की तरह इस्तेमाल किया जाना चाहिए? लेकिन फिर अन्य डेटा प्रकार हैं जो पॉइंटर कीवर्ड "पी" से शुरू होते हैं। तो मुझे नहीं लगता। तो यह वास्तव में क्या है? और कुछ डेटा प्रकारों के पॉइंटर्स पहले स्थान पर अलग-अलग डेटा प्रकार क्यों दिए गए थे? उदाहरण के लिए, पीसीएचएआर आसानी से CHAR * बनने के लिए डिज़ाइन किया जा सकता था?

उत्तर:

उत्तर № 1 के लिए 7

हैंडल शुरुआती संस्करणों में पॉइंटर्स के रूप में इस्तेमाल किया जाता थाविंडोज़ लेकिन अब नहीं हैं। उन्हें "कुकी" के रूप में सोचें, एक अद्वितीय मूल्य जो विंडोज को पहले संसाधन आवंटित संसाधन को वापस खोजने की अनुमति देता है। CreateFile () की तरह एक नया हैंडल देता है, बाद में आप उसी फ़ाइल से डेटा पढ़ने के लिए SetFilePointer () और ReadFile () में इसका उपयोग करते हैं। और बंद करें हैंडल () आंतरिक डेटा संरचना को साफ करने के लिए, फ़ाइल को बंद करना भी। सामान्य पैटर्न कौन सा है, संसाधन बनाने के लिए एक एपीआई फ़ंक्शन, इसका उपयोग करने के लिए एक या अधिक और इसे नष्ट करने के लिए एक।

हां, पी के साथ शुरू होने वाले प्रकार पॉइंटर हैंप्रकार के। और हाँ, वे अनावश्यक हैं, यह आपके साथ ही काम करता है अगर आप * स्वयं का उपयोग करते हैं। वास्तव में यह सुनिश्चित नहीं है कि सी प्रोग्रामर उन्हें घोषित क्यों करना चाहते हैं, मुझे व्यक्तिगत रूप से लगता है कि यह कोड पठनीयता को कम करता है और मैं हमेशा उनसे बचता हूं। लेकिन एलपीसीडब्लूआर जैसे यौगिक प्रकारों को ध्यान दें, एक "लगातार चौड़ी स्ट्रिंग के लिए एक लंबा सूचक"। एल का अब और कुछ मतलब नहीं है, जो कि विंडोज के 16-बिट संस्करण की तारीख है। लेकिन पॉइंटर, कॉन्स और चौड़ा महत्वपूर्ण है। कर उस टाइपपीफ का उपयोग करें, ऐसा नहीं करने से भविष्य में पोर्टेबिलिटी समस्याओं का खतरा होगा। इन टाइपिफ्स का मूल कारण कौन सा है।


जवाब के लिए 2 № 2

A handle is the same as a pointer only so far as दोनों आईडी एक विशेष आइटम। जाहिर है कि एक सूचक आइटम का पता है, इसलिए यदि आप इसे जानते हैं तो यह संरचना आप आइटम में फ़ील्ड प्राप्त करना शुरू कर सकते हैं। एक हैंडल एक सूचक हो सकता है या नहीं - मूल रूप से यदि यह एक सूचक है तो आप नहीं जानते कि यह क्या है इस पर इशारा करते हुए आप खेतों में नहीं जा सकते।

एक हैंडल के बारे में सोचने का सबसे अच्छा तरीका यह है कि यह एक हैसिस्टम में कुछ के लिए अद्वितीय आईडी। जब आप इसे सिस्टम में किसी चीज़ पर पास करते हैं तो सिस्टम को पता चलेगा कि इसे किस प्रकार डालना है (यदि यह एक सूचक है) या इसका इलाज कैसे करें (यदि यह केवल कुछ आईडी या इंडेक्स है)।


संबंधित सवाल
सबसे लोकप्रिय