मैंने देखा कि सी में एक सामान्य idiom है जो एक सूचक को वापस करने के बजाय एक दूसरे तर्क के रूप में एक un-malloc
एड पॉइंटर स्वीकार करने के लिए है। उदाहरण:पॉइंटर दूसरे तर्क के रूप में?
/*function prototype*/
void create_node(node_t* new_node, void* _val, int _type);
/* implementation */
node_t* n;
create_node(n, &someint, INT)
/* function prototype */
node_t* create_node(void* _val, int _type)
/* implementation */
node_t* n = create_node(&someint, INT)
फायदे और/या दोनों तरीकों में से नुकसान क्या हैं के बजाय?
धन्यवाद!
संपादित करें आपके उत्तरों के लिए धन्यवाद। पसंद 1 के लिए प्रेरणा अब मेरे लिए बहुत स्पष्ट हैं (और मुझे यह इंगित करना चाहिए कि पसंद के लिए पॉइंटर तर्क 1 malloc'd जो मैंने मूल रूप से सोचा था) के विपरीत होना चाहिए।
यह। 'संरचना चीज टी करने की क्षमता; init_thing (&t); 'अच्छा है। – dmckee
यदि मैं एक लिंक्ड सूची की प्रतिलिपि बनाने के लिए एक फ़ंक्शन लिखना चाहता था, तो क्या मेरे पास' void copy_list (node_t * new_head, node_t * original_head) 'जैसे फ़ंक्शन प्रोटोटाइप होगा? मुझे लगता है कि मुझे malloc करना होगा मूल सूची में प्रत्येक के लिए नया नोड और इसे नए_हेड के 'अंत' में जोड़ें (वैल और प्रकार की प्रतिलिपि बनाएँ लेकिन इसे एक नया 'node_t * अगला' सूचक मान दें)। क्या यह इसके बारे में जाने का सबसे अच्छा तरीका है? – Tyler
@ टायलर, उस प्रतिलिपि के लिए संभावित रूप से बेहतर हस्ताक्षर के रूप में 'copy_list (node_t ** original_head)' पर विचार करें (हालांकि यह असाधारण मामला _returning_ एक 'node_t *' निश्चित रूप से एक उचित संभावना है) –