Friday 15 February 2013

C array of struct pointers -


मेरे पास 2 structs A & amp; बी: <पूर्व> struct A {int v; } Struct B {struct A * ptrs [MAX_PTRS]; }

असल में, मुझे struct B के तत्व को स्ट्रेट ए (MAX_PTRS एक मैक्रो है जो हेडर फ़ाइल में परिभाषित किया गया है) के लिए एक सरणी के रूप में होना चाहता है।

अब, कहें कि मेरे पास एक वैश्विक वैरिएबल है:

  struct B * sB;   

किसी कारण से, अगर मैं निम्नलिखित कमांड की कोशिश करता / करती हूं

  int x = sB-> gt; [0] - & gt; v;   

मुझे एक त्रुटि मिलती है - '' & gt; '' का अवैध प्रकार तर्क। "

क्या गलत है? (मान लें कि सब कुछ शुरु किया गया है और इसे सही ढंग से निर्दिष्ट किया गया है)

सामान्य रूप से अमान्य प्रकार तर्क '- & gt ; ' का अर्थ है कि आपको डॉट ऑपरेटर () का उपयोग करना चाहिए था, जहां आपने डॉट ड्रिंफर ऑपरेटर ( - & gt; ) जैसे प्रश्नों में देखा था। < / P>

अपने कोड में आप इसे देख सकते हैं यदि आपने यह किया था:

  struct A {int v; }; संरचना बी {संरचना एक ptrs [MAX_PTRS]; // याद आ रही है याद;};   

यह अनुपलब्ध * आपको दिखाई देने वाली त्रुटि का कारण बनता है: त्रुटि: अमान्य प्रकार का तर्क â ???? - & gt; एक ?? ?? (एक एक्टिविटी AA ????)

यदि सब कुछ वास्तव में आरंभ और सही ढंग से असाइन किया गया है, तो इस उदाहरण को देखने में कोई समस्या नहीं होनी चाहिए: <पूर्व> # परिभाषित MAX_PTRS 3 संरचना A {int v; }; संरचना बी {संरचना एक ptrs [MAX_PTRS]; }; Int main (int argc, char * argv []) {struct बी * sB = malloc (sizeof (struct बी)); एसबी- & gt; ptrs [0] = मॉलोक (आकारफ (संरचना ए)); एसबी- & gt; ptrs [0] - & gt; वी = 10; Int x = sB- & gt; ptrs [0] - & gt; वी; Printf ("% d \ n", x); वापसी 0; }

No comments:

Post a Comment