const int * i;
i
निरंतर पूर्णांक के लिए सूचक है। i
को एक अलग मान पर इंगित करने के लिए बदला जा सकता है, लेकिन i
द्वारा इंगित मूल्य को बदला नहीं जा सकता है।
int * const i;
i
एक गैर निरंतर पूर्णांक तक एक निरंतर सूचक है। i
द्वारा इंगित मूल्य बदला जा सकता है, लेकिन i
को किसी भिन्न मान पर इंगित करने के लिए बदला नहीं जा सकता है।
const volatile int ip;
यह एक तरह का मुश्किल है। तथ्य यह है कि ip
const
का अर्थ है कि संकलक आपको ip
का मान बदलने नहीं देगा। हालांकि, यह अभी भी सिद्धांत में संशोधित किया जा सकता है, उदा। अपना पता ले कर और const_cast
ऑपरेटर का उपयोग करके। यह बहुत खतरनाक है और अच्छा विचार नहीं है, लेकिन इसकी अनुमति है। volatile
क्वालीफायर इंगित करता है कि किसी भी समय ip
एक्सेस किया गया है, इसे हमेशा स्मृति से पुनः लोड किया जाना चाहिए, यानी इसे किसी रजिस्टर में कैश नहीं किया जाना चाहिए। यह संकलक को कुछ अनुकूलन करने से रोकता है। आप volatile
क्वालीफायर का उपयोग करना चाहते हैं जब आपके पास एक वेरिएबल हो जो किसी अन्य थ्रेड द्वारा संशोधित किया जा सकता है, या यदि आप मेमोरी मैप किए गए I/O, या अन्य समान स्थितियों का उपयोग कर रहे हैं जो संकलक की अपेक्षा नहीं कर सकते हैं। उसी चर पर const
और volatile
का उपयोग करना असामान्य है (लेकिन कानूनी) - आप आमतौर पर एक देखेंगे लेकिन दूसरे नहीं।
const int *i;
यह पहली घोषणा के समान है।
स्रोत
2008-10-24 04:25:02
यदि आप व्याकरण और वर्तनी के लिए संपादित करने जा रहे हैं, तो क्यों नहीं 'अगर' 'I' के साथ टाइप करें और नहीं '!'? – Eclipse