इसलिए मैं निम्न-स्तरीय भाषा में नया हूँ। और मैं सी के लिए कुछ सीखने की सामग्री के माध्यम से जा रहा था, और मैं वास्तव में निम्नलिखित अभिव्यक्तियों के बीच अंतर को अलग नहीं कर सका।
struct Node *temp;
struct Node *head;
//expression 1
temp->next = head;
//expression 2
temp = head;
क्या दो अभिव्यक्तियों का मतलब वही नहीं है जो अस्थायी नोड के सूचक को निर्देशित कर रहा है जहां हेड नोड का सूचक इंगित करता है?
2 जवाब
temp
एक सूचक है। संभवतः, आपके "अभिव्यक्ति 1" से पहले, यह कुछ नोड x को इंगित करने के लिए सेट किया गया है। फिर temp->next = head;
, x के next
सदस्य को head
पर सेट करता है। यह x (x में next
सदस्य) को बदल देता है। यह temp
नहीं बदलता है।
इसके विपरीत, temp = head;
, temp
को head
पर सेट करता है। यह temp
बदलता है।
temp=head
वास्तव में temp
का पता बदल देता है जबकि temp->next = head
का अर्थ है temp
को उस स्थान से जोड़ना जहां head
इंगित करता है और उसका अपना पता नहीं बदलता है।
जैसा कि आपने वहां घोषित किया है, temp
और head
पॉइंटर्स हैं, और पहली अभिव्यक्ति में temp
पॉइंटर का next
मान head
की ओर इशारा करता है। जबकि दूसरी अभिव्यक्ति में आप temp=head
बना रहे हैं
...इसका मतलब यह नहीं है कि temp
head
की ओर इशारा करता है, बल्कि temp
अब head
है...
आशा है कि आप इसे प्राप्त करेंगे। :)
next
Node
संरचना का सदस्य है औरstruct Node *
प्रकार है, तो आपके पास दो अलग-अलग पॉइंटर्स हैं। वे एक ही स्थान, या विभिन्न स्थानों की ओर इशारा कर सकते हैं। यह दो अलग-अलग चर की तरह है। यदि आपके पास उदा।struct Node *temp1, *temp2;
और फिरtemp1 = head; temp2 = head;
क्या आप अभी भी असाइनमेंट के बीच अंतर के बारे में पूछेंगे?