मैं निम्नलिखित मामले के बारे में पूछना चाहता था:क्या मुझे स्पष्ट रूप से malloc() के वापसी मूल्य कास्ट करना चाहिए?
char *temp;
temp = malloc(10);
चूंकि malloc
का रिटर्न प्रकार void*
है, क्या malloc
द्वारा लौटाए गए पॉइंटर को temp को असाइन किए जाने से पहले char*
प्रकार पर डाला जाएगा? इस संबंध में मानक क्या कहता है?
यदि हमारे सूचक परिवर्तक उदाहरण के लिए कुछ संरचना प्रकार हैं:
struct node *temp;
temp = (struct node *)malloc(sizeof(struct node));
अगर हम इसे struct node*
प्रकार के बिना कास्ट किए बिना अस्थायी रूप से स्मृति आवंटित करते हैं, तो इसे स्पष्ट रूप से struct node*
प्रकार में डाला जाएगा या यह स्पष्ट रूप से डालना आवश्यक है यह struct node*
प्रकार के लिए?
यदि आपको कभी भी सी कंपाइलर के बजाय सी ++ कंपाइलर के साथ कोड को संकलित करने की आवश्यकता हो, तो कलाकारों की आवश्यकता होती है। नतीजतन, मेरे अधिकांश कोड में स्पष्ट कास्ट शामिल है - भले ही शुद्ध सी को इसकी आवश्यकता नहीं है। मैं आमतौर पर इसे इंगित करने के लिए/* = सी ++ = */के साथ टैग करता हूं। –
हालांकि जरूरी नहीं है, मेरे लिए मुझे थोड़ी सी वर्बसिटी के साथ बाद में कोड पढ़ने में मदद करता है। – Xolve
यह भी देखें [यह प्रश्न] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858)। – unwind