सी में निम्नलिखित घोषणा:सी में सूचक वाक्यविन्यास: क्यों * केवल पहले चर पर लागू होता है?
int* a, b;
प्रकार int
रूप a
प्रकार int*
के रूप में और b
घोषित करेंगे। मैं इस जाल के बारे में अच्छी तरह से जानता हूं, लेकिन मैं क्या जानना चाहता हूं क्यों यह इस तरह से काम करता है। यह b
को int*
के रूप में भी घोषित नहीं करता है, क्योंकि अधिकांश लोग सहजता से अपेक्षा करते हैं? दूसरे शब्दों में, *
क्यों प्रकार के बजाय परिवर्तनीय नाम पर लागू होता है?
सुनिश्चित करें कि आप इसे इस तरह लिख सकता है कि यह कैसे वास्तव में काम करता है के साथ और स्थायी:
int *a, b;
हालांकि, मैं और सभी को मैं के संदर्भ में सोचने के लिए प्रकार का एक है "बात की है सूचकांक, ए के बजाय सूचक कुछ डेटा के लिए एक सूचक है और उस डेटा का प्रकार "int" है।
क्या यह सी के डिजाइनरों द्वारा बस एक बुरा निर्णय था या क्या इसका कोई अच्छा कारण है कि इसे इस तरह से पार्स किया गया है? मुझे यकीन है कि प्रश्न का उत्तर पहले दिया गया है, लेकिन मुझे खोज का उपयोग करके यह प्रतीत नहीं होता है।
ईमानदार होने के लिए, यदि सी भाषा ने '* 'प्रकार को संशोधित किया है तो हम लोग पूछेंगे कि" int * a * b क्यों नहीं है,' मुझे एक सूचक और पूर्णांक दें? "। – bta
@bta, हाँ, हम करेंगे - लेकिन मुझे लगता है कि यह कम लोगों को भ्रमित कर देगा। वैसे भी, बिंदु 40 साल पहले किए गए फैसले के बारे में बहस नहीं करना है, यह समझने के लिए है कि इसके कारण हैं जिनके बारे में मुझे पता नहीं है। – EMP
आप इसे http://c-faq.com/decl/charstarws.html – Amarghosh