पॉइंटर (Pointer)
C प्रोग्रामिंग भाषा में, *p पॉइंटर में संग्रहीत मान को दर्शाता है और p मान के पते को दर्शाता है, जिसे पॉइंटर कहा जाता है।
const int* और int const* का अर्थ है कि पॉइंटर एक कॉन्स्टेंट int को इंगित कर सकता है और इस पॉइंटर द्वारा इंगित int का मान नहीं बदला जा सकता। लेकिन हम पॉइंटर के मान को बदल सकते हैं क्योंकि यह कॉन्स्टेंट नहीं है और यह किसी अन्य कॉन्स्टेंट int को इंगित कर सकता है।
const int* const का अर्थ है कि पॉइंटर एक कॉन्स्टेंट int को इंगित कर सकता है और इस पॉइंटर द्वारा इंगित int का मान नहीं बदला जा सकता। और हम पॉइंटर के मान को भी नहीं बदल सकते क्योंकि यह अब कॉन्स्टेंट है और यह किसी अन्य कॉन्स्टेंट int को इंगित नहीं कर सकता।
अंगूठे का नियम नामकरण सिंटैक्स को दाएं से बाएं पढ़ना है।
// कॉन्स्टेंट पॉइंटर टू कॉन्स्टेंट int const int * const // पॉइंटर टू कॉन्स्टेंट int const int *
उदाहरण (C)
कमेंट किए गए त्रुटिपूर्ण कोड को अनकमेंट करें और त्रुटि देखें।
#include <stdio.h>
int main() {
// उदाहरण: int const*
// नोट: int const* वही है जो const int*
const int p = 5;
// q एक पॉइंटर टू कॉन्स्टेंट int है
int const* q = &p;
// अमान्य असाइनमेंट
// p का मान नहीं बदला जा सकता
// error: assignment of read-only location '*q'
//*q = 7;
const int r = 7;
// q किसी अन्य कॉन्स्टेंट int को इंगित कर सकता है
q = &r;
printf("%d", *q);
// उदाहरण: int const* const
int const* const s = &p;
// अमान्य असाइनमेंट
// s का मान नहीं बदला जा सकता
// error: assignment of read-only location '*s'
// *s = 7;
// अमान्य असाइनमेंट
// s नहीं बदला जा सकता
// error: assignment of read-only variable 's'
// s = &r;
return 0;
}
आउटपुट
7