**
एक पॉइंटर के लिए केवल एक सूचक है। तो जहां instruction*
में instruction
संरचना का पता है, instruction**
में instruction*
का पता है जिसमें instruction
ऑब्जेक्ट का पता है।
instruction
तक पहुंचने के लिए instruction**
द्वारा इंगित पॉइंटर द्वारा इंगित किया गया है, तो आप (**p).repetitions
या कुछ समान की तरह केवल दो तारों का उपयोग करें।
आप इस तरह यह कल्पना कर सकते हैं:
instruction* ----> instruction
instruction** ----> instruction* ----> instruction
याद रखें, हालांकि, कि बस struct instruction** instructions;
की घोषणा वास्तव में एक instruction
struct नहीं बनाता है। यह सिर्फ एक सूचक बनाता है जिसमें कचरा मूल्य होता है। आप इसे प्रारंभ करना होगा:
struct instruction inst;
// set members of inst...
*instructions = &inst;
...
(*instructions)->repetitions++; // or whatever
हालांकि, यह लगता है कि आप instruction*
रों की एक सरणी को इंगित करने के लिए एक instruction**
उपयोग कर रहे हैं। सरणी को प्रारंभ करने के लिए, आप एक for
पाश की जरूरत है:
instructions = malloc(sizeof(struct instruction*) * num_of_arrays);
for (i = 0; i < num_of_arrays; ++i)
instructions[i] = malloc(sizeof(struct instruction) * size_of_each_subarray);
और फिर आप instructions[i]->datamember
की तरह एक तत्व पहुँच सकते हैं।
स्रोत
2011-04-28 06:46:06
प्रश्न कोड कोड में प्रश्न न डालना एक अच्छा विचार हो सकता है। – takrl
कृपया सी # के साथ सी प्रश्नों को टैग न करें अगर आपको नहीं पता कि सी # क्या है। – BoltClock
कृपया अपना प्रश्न कोड ब्लॉक के बाहर रखें अन्यथा लोग इसे नहीं देख पाएंगे। मैंने इसे संपादित कर लिया है और इसे अभी बाहर ले जाया है। –