2012-03-22 16 views
7

मैं एक किताब के माध्यम से जा रहा था सूची लिंक्ड और इन पंक्तियों केसी (नोड *) में सी का क्या मतलब है?

if(*head == NULL){ 

}else if ((*head)->next == (node *) NULL){ 

} 

क्या NULL और (node *) NULL के बीच का अंतर वे दूसरे के स्थान पर इस्तेमाल किया जा सकता है देखा पढ़ रहे हैं?

typedef struct nodeType{ 
    int info; 
    struct nodeType *next; 
}node; 
+8

इसका मतलब है कि कोड के लेखक को पता नहीं है कि वह क्या कर रहा है। 'न्यूल' को कास्ट की जरूरत नहीं है। – asveikau

+2

यह सिर्फ obfuscation है। पॉइंटर्स को सशर्त में 'NULL' की तुलना की आवश्यकता नहीं है। 'अगर (* सिर)' और 'अगर ((* सिर) -> अगला) 'पूरी तरह से करेगा। –

उत्तर

8

पॉइंटर्स की तुलना करते समय, प्रकारों पर विचार नहीं किया जाता है, इसलिए यह व्यर्थ है।

लेखक संभवतया इसे स्पष्टता के लिए शामिल करते हैं यदि यह एक प्रारंभिक पुस्तक है। यदि यह एक प्रारंभिक पुस्तक नहीं है, तो लेखक के पास एक विषम कोडिंग शैली है, या किसी भी तरह से लगता है कि यह अधिक सार्थक है।

+4

मैं देखता हूं कि आपने वहां क्या किया ... – Supr

+0

@ सुप्रर प्वाइंटलेस बेकार के लिए शब्द पर जाना है :) – Corbin

7

इन्हें एक दूसरे के लिए उपयोग किया जा सकता है। लेकिन यह आपके कोड के रूप में NULL टाइपकास्ट करने के लिए गैर-मानक और असामान्य है।

कोई कलाकार आवश्यक नहीं है।

संबंधित मुद्दे