मैं सी में बहुत नया हूं और सभी पॉइंटर सामानों में कुछ समस्याएं हैं।टाइपपीफ स्ट्रक्चर पॉइंटर परिभाषा
मैं इस कोड लिखा है:
typedef struct edgeitem
{
double weight;
}EDGE_ITEM, *pEDGE_ITEM; //also declaration of a pointer
/************ edge that includes a pointer to the edge item, next and prev ******/
typedef struct edge
{
pEDGE_ITEM *edge_item;
pEDGE *next; //pointer to next edge
pEDGE *prev; //pointer to prev edge
}EDGE, *pEDGE;
मैं एक त्रुटि इस तरह से मिलता है और सिर्फ नहीं कर सकते क्यों।
मुझे पता है कि edgeitem
और edge
टैग हैं और मैं struct edge *next
का उपयोग कर सकता हूं लेकिन मैंने पॉइंटर्स घोषित किए हैं तो मैं उनका उपयोग कैसे नहीं कर सकता?
क्या मुझे एक सूचक होने पर * उपयोग करने की आवश्यकता है?
pEDGE_ITEM *edge_item
//or
pEDGE_ITEM edge_item
मैं समझ नहीं पा रहा हूं, यह एक सूचक है तो मैं * क्यों जोड़ूं?
और आखिरी सवाल यह है:
*EDGE next
EDGE *next
और पिछले एक: अगर मैं ऊपर का उपयोग कर रहा है, क्या बीच का अंतर है अगर मैं जोड़ रहा:
typedef struct edge_list
{
EDGE *head;
}EDGE_LIST;
है यह वही है:
pEDGE head;
आमतौर पर टाइपिफ़ के पीछे '*' को छिपाने के लिए यह सामान्य रूप से खराब शैली है। यह केवल भ्रम पैदा कर सकता है। प्रोग्रामर पढ़ते हैं * चीजिंग से तेज चीज। यह अन्य वाक्यविन्यास तत्वों के लिए भी जाता है, जैसे '# परिभाषित करें &&&, et cetera। संक्षेप में: ऐसा मत करो। – wildplasser