सी के लिए नया होने के नाते, शून्य पॉइंटर्स से प्राप्त एकमात्र व्यावहारिक उपयोग बहुमुखी कार्यों के लिए है जो किसी दिए गए पॉइंटर में विभिन्न डेटा प्रकारों को स्टोर कर सकता है। इसलिए स्मृति आवंटन करते समय मैंने अपने सूचक को टाइप-कास्ट नहीं किया।क्यों एक शून्य सूचक डालना टाइप करें?
मैंने कुछ कोड उदाहरण देखे हैं जो कभी-कभी शून्य पॉइंटर्स का उपयोग करते हैं, लेकिन उन्हें टाइप-कास्ट मिलता है। यह उपयोगी क्यों है? एक शून्य के बजाय सीधे वांछित प्रकार के सूचक क्यों नहीं बनाते?
void some_function(void * some_param) {
int some_value = *some_param; /* won't work, you can't dereference a void pointer */
}
void some_function(void * some_param) {
int some_value = *((int *) some_param); /* ok */
}
क्या आप एक उदाहरण दिखा सकते हैं? –
आपको 'शून्य *' से कास्ट करने की आवश्यकता नहीं है क्योंकि भाषा किसी अन्य प्रकार के पॉइंटर से स्वचालित रूपांतरण को परिभाषित करती है, लेकिन सभी प्रोग्रामर इस बारे में अवगत नहीं हैं (दुर्भाग्य से सभी सी पुस्तक लेखकों को भी नहीं) । –
यदि आप इसकी संरचना तक पहुंचना चाहते हैं तो आपको एक शून्य पॉइंटर डालना होगा। (संरचना) –