आज मैं द सी प्रोग्रामिंग लैंग्वेज (दूसरा संस्करण ब्रायन डब्ल्यू। कर्निघन एंड डेनिस एम। रिची) के पेज 167 पर पहुंचा और पाया कि लेखक कहता है कि मुझे कास्ट करना चाहिए । यहाँ पुस्तक से हिस्सा है:malloc
7.8.5 संग्रहण प्रबंधन
फ़ंक्शन मॉलॉक और कॉलोक गतिशील रूप से मेमोरी के ब्लॉक प्राप्त करते हैं।
void *malloc(size_t n)
यदि अनुरोध को संतुष्ट नहीं किया जा सकता है, तो एक सूचक को गैर-संचित भंडारण के बाइट्स, या NULL पर लौटाता है।
void *calloc(size_t n, size_t size)
निर्दिष्ट आकार की n ऑब्जेक्ट्स की सरणी के लिए पर्याप्त खाली स्थान के लिए एक पॉइंटर लौटाता है, या यदि अनुरोध संतुष्ट नहीं किया जा सकता है तो NULL। भंडारण शून्य से शुरू होता है। मालकॉक या कॉलोक द्वारा लौटाए गए सूचक में प्रश्न में ऑब्जेक्ट के लिए उचित संरेखण है, लेकिन इसे उचित रूप में डाला जाना चाहिए, जैसे कि
int *ip; ip = (int *) calloc(n, sizeof(int));
मुझे पहले से ही पता है कि malloc
(और इसका परिवार) टाइप * शून्य देता है , और अच्छे स्पष्टीकरण हैं कि क्यों नहीं डाली जाएmalloc
।
लेकिन मेरा सवाल यह है: पुस्तक क्यों कहती है कि मुझे इसे डालना चाहिए?
void *
, और अपडेट नहीं किया गया था। इस उत्तर को भी देखें ।
malloc
क्योंकि यह C ++ नहीं है - सिवाय इसके कि आपको कब करना है - लेकिन आपको नहीं - सिवाय ... AGGGHHHHHH !!!!! :-)