2011-10-17 21 views
5

मैं काफी सेल्सियस पर नया हूँ और मैं निम्नलिखित दो चर घोषणाओं के बीच अंतर पता नहीं है:सी में int * ptr और int * ptr के बीच क्या अंतर है?

int* ptr; 
int *ptr; 

मुझे लगता है कि घोषणा int* ptr; में, ptr के मूल्य नहीं बदला जा सकता, जबकि यह बदला जा सकता है घोषणा के लिए, int *ptr;

मुझे यकीन नहीं है कि यह ऐसा है या नहीं।

कृपया दो घोषणाओं के पीछे अवधारणा को समझने में मेरी सहायता करें।

+0

संभावित डुप्लिकेट [सी: "int \ * fooBar;" के बीच कोई अंतर है और "int \ * fooBar;"?] (http://stackoverflow.com/questions/2093459/c-is-there-a-difference-between-int-foobar-and-int-foobar) और [int के बीच अंतर \ * i और int \ * i] (http://stackoverflow.com/questions/3770187/difference-between-int-i-and-int-i), [int \ * p और int \ * p घोषणा के बीच अंतर ] (http://stackoverflow.com/questions/5590150/difference-between-int-p-and-int-p-declaration) कम से कम एक दर्जन अन्य लोगों के साथ। –

+0

http://stackoverflow.com/questions/3770187/difference-between-int-i-and-int-i –

उत्तर

23

कंपाइलर के लिए, दो घोषणाओं के बीच कोई अंतर नहीं है।

मानव पाठक को, पूर्व का अर्थ यह हो सकता है कि "int *" प्रकार एक ही कथन में सभी घोषणाओं पर लागू होता है। हालांकि, * केवल निम्नलिखित पहचानकर्ता को बांधता है।

उदाहरण के लिए, निम्नलिखित दोनों कथन केवल एक सूचक घोषित करते हैं।

int* ptr, foo, bar; 
int *ptr, foo, bar; 

यह कथन एकाधिक पॉइंटर्स घोषित करता है, जो "int *" रिक्ति का उपयोग करने से रोकता है।

int *ptr1, *ptr2, *ptr3; 
4

सी में रिक्त स्थान अधिक महत्वहीन हैं। कभी-कभी ऐसे मामले होते हैं जहां रिक्त स्थान महत्वपूर्ण होते हैं, लेकिन ये कुछ और बहुत दूर हैं। आपके द्वारा पोस्ट किए गए दो उदाहरण बराबर हैं।

2

दूसरों की तरह कहा। इसमें कोई फर्क नही है। यदि आप अधिक जटिल सी प्रकार की घोषणा को समझना चाहते हैं तो आप इस लिंक को उपयोगकर्ता के रूप में पा सकते हैं। Reading C declarations

1

यह खाली स्थान के ऑपरेटर ओवरलोडिंग कहा जाता है, यहाँ देखें: http://www2.research.att.com/~bs/whitespace98.pdf

+0

मुझे पता है कि यह एक साल पहले पोस्ट किया गया था लेकिन वह लिंक वाकई कमाल है! धन्यवाद – anpatel

1

int *p;

*p 


संकलक, (int*) is a type named pointer के लिए कोई अर्थ नहीं है।

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