/ / मैं एक सूचक से एक सूचक से एक चर से एक मान का संदर्भ कैसे करूँ? - सी, चर, पॉइंटर्स, संरचना, कंपाइलर-त्रुटियां

मैं एक सूचक से एक सूचक से एक चर से एक मान का संदर्भ कैसे करूँ? - सी, चर, पॉइंटर्स, संरचना, कंपाइलर-त्रुटियां

मेरे पास एक संरचना है:

 struct room;
...
/*some more structs */

typedef struct {
int state;
int id;
struct room* north;
struct room* south;
struct room* east;
struct room* west;
creature* creatures[10];
} room;

और एक समारोह जो सामग्री को मुद्रित करता है:

 void printContentsOfRoom(room* r) {
printf("nRoom %d:n", r->id);
printf("tState: %sn", getState(r));
printf("ntNeighbors:n");
if (r->north.id != -1)
printf("t    North: Room %dn",((room*)r->north)->id);
if (r->east.id != -1)
printf("t    East: Room %dn",((room*)r->east)->id);
if (r->south.id != -1)
printf("t    South: Room %dn",((room*)r->south)->id);
if (r->west.id != -1)
printf("t    West: Room %dn",((room*)r->west)->id);
printf("ntCreatures:n");
for (int i = 0; i < 10; i++) {
creature* c = (creature*)r->creatures[i];
if (c) {
if (c == pc)
printf("t    %sn",getType(c));
else
printf("t    %s %dn",getType(c),c->id);
}
}
}

मैं इसे बनाने की कोशिश कर रहा हूं ताकि कमरे आईडी हो-1 पर सेट करें (प्रोग्राम चलाते समय सेट करें), यह उस कमरे के बारे में जानकारी मुद्रित नहीं करता है। संकलन पर, मुझे त्रुटि "सदस्य के लिए अनुरोध" आईडी "कुछ संरचना या संघ में त्रुटि नहीं मिलती है।"

इसके अलावा, मैंने if condition r-> उत्तर-> आईडी को सेट करने का प्रयास किया है, और यह त्रुटि "अपरिवर्तनीय सूचक को अपूर्ण प्रकार" संरचना कक्ष "" देता है

उत्तर:

उत्तर № 1 के लिए 1

मुझे लगता है कि आप इस तरह की एक और घोषणा करना चाहते हैं:

typedef struct room room;

struct room{
.
.
.
};

फिर आप इसका उपयोग कर सकते हैं r->north->id। यह SO प्रश्न देखें: टिपीडफ स्ट्रक्चर को पॉइंटर्स वाले स्वयं को परिभाषित करने के लिए कैसे करें?