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