मेरे पास निम्न स्ट्रक्चर्स उदाहरण के रूप में हैं:
#define MAX_PEOPLE 16 टाइपेडफ़ स्ट्रेट {int उम्र; }व्यक्ति; टाइपिप्पिफ स्ट्रक्चर {व्यक्ति * लोग; इंट संख्या लोक; } टीम;
मैं एक समारोह में व्यक्तियों की सरणी आवंटित करने की कोशिश कर रहा हूं, पैरामीटर द्वारा पारित किया गया। मेरा टीम
को व्यक्ति
के 16 बिंदुओं की एक सरणी को संग्रहित करने के लिए माना जाता है मैं समझ नहीं सकता कि मैं क्या कर रहा हूं।
शून्य आरंभ टीम (टीम * टीम) {टीम-> न्यूज़ लोक = MAX_PEOPLE; व्यक्ति * पी [MAX_PEOPLE]; के लिए (इंट आई = 0; आई & lt; MAX_PEOPLE; i ++) {पी [आई] = मॉलोक (आकारफ (व्यक्ति);} टीम- & gt; लोग = & amp; पी [0];}
< पी> मैंने अपने team-> gt; लोगों [i]
के पते मुद्रित किए और मुझे यादृच्छिक कबाड़ मिल रहा है। क्यों assingment team-> gt; people = & amp; p [0 ]
गलत? क्या यह मेरे सरणी का पहला पता नहीं मिल पाता है तो सूचक अंकगणित?
< P> चूंकि आपने टिप्पणी में कहा है कि आप
व्यक्ति
वस्तुओं और नहीं संकेतक की एक सरणी आवंटित करने का प्रयास कर रहे हैं, तो आपको करना चाहिए: शून्य addPeople (टीम * टीम) {टीम- & gt; numPeople = MAX_PEOPLE; टीम- & gt; लोगों = malloc (sizeof (व्यक्ति) * MAX_PEOPLE)}}
कोई अंत में, अपनी स्मृति को मुक्त करने के लिए याद रखें। *
में sizeof
क्योंकि आप ऑर्डर करने वाले पॉइंटर्स की एक सरणी नहीं चाहते हैं, लेकिन बाद में आप एकल तत्वों (जैसे प्रत्येक person < / कोड> वस्तु)
टीम-> लोगों के साथ [2] .ge = 25; // सरणी में तीसरा व्यक्ति
Comments
Post a Comment