सूचक
C प्रोग्रामिंग भाषा में, *p एक पॉइंटर में संग्रहीत मान का प्रतिनिधित्व करता है और p मान के पते का प्रतिनिधित्व करता है, जिसे पॉइंटर के रूप में संदर्भित किया जाता है।
कॉन्स्ट चार* और चार कांस्ट* कहता है कि सूचक एक स्थिर चार को इंगित कर सकता है और इस सूचक द्वारा इंगित चार के मान को बदला नहीं जा सकता है। लेकिन हम पॉइंटर के मान को बदल सकते हैं क्योंकि यह स्थिर नहीं है और यह किसी अन्य स्थिरांक को इंगित कर सकता है।
चार* स्थिरांक कहता है कि सूचक एक चार को इंगित कर सकता है और इस सूचक द्वारा इंगित चार के मान को बदला जा सकता है। लेकिन हम पॉइंटर का मान नहीं बदल सकते क्योंकि यह अब स्थिर है और यह किसी अन्य चार को इंगित नहीं कर सकता है।
const char* const कहता है कि सूचक एक निरंतर चार को इंगित कर सकता है और इस सूचक द्वारा इंगित int का मान बदला नहीं जा सकता है। और हम पॉइंटर के मान को भी नहीं बदल सकते हैं, साथ ही यह अब स्थिर है और यह किसी अन्य स्थिरांक को इंगित नहीं कर सकता है।
अंगूठे का नियम वाक्य रचना को दाएं से बाएं ओर नाम देना है।
// constant pointer to constant char const char * const // constant pointer to char char * const // pointer to constant char const char *
उदाहरण (सी)
टिप्पणी किए गए त्रुटिपूर्ण कोड पर टिप्पणी करें और त्रुटि देखें।
#include <stdio.h> int main() { //Example: char const* //Note: char const* is same as const char* const char p = 'A'; // q is a pointer to const char char const* q = &p; //Invalid asssignment // value of p cannot be changed // error: assignment of read-only location '*q' //*q = 'B'; const char r = 'C'; //q can point to another const char q = &r; printf("%c\n", *q); //Example: char* const char u = 'D'; char * const t = &u; //You can change the value *t = 'E'; printf("%c", *t); // Invalid asssignment // t cannot be changed // error: assignment of read-only variable 't' //t = &r; //Example: char const* const char const* const s = &p; // Invalid asssignment // value of s cannot be changed // error: assignment of read-only location '*s' // *s = 'D'; // Invalid asssignment // s cannot be changed // error: assignment of read-only variable 's' // s = &r; return 0; }
आउटपुट
C E