const क्वालिफायर वेरिएबल को रीड-ओनली घोषित करता है - इनिशियलाइजेशन के बाद संशोधन कंपाइल एरर देता है।
उदाहरण
#include <stdio.h>
int main() {
const int x = 10;
// x = 12; // Error: assignment of read-only variable 'x'
printf("x = %d\n", x);
return 0;
}
आउटपुट (यदि संशोधन हटाया जाए)
x = 10
const के प्रकार और अर्थ
| घोषणा | अर्थ |
|---|---|
const int x; | x कॉन्स्ट इंट (मान नहीं बदल सकता) |
int const x; | ऊपर के समान |
const int *p; | p कॉन्स्ट इंट को इंगित करता है (*p नहीं बदल सकता, p बदल सकता है) |
int *const p; | p कॉन्स्ट पॉइंटर (p नहीं बदल सकता, *p बदल सकता है) |
const int *const p; | दोनों कॉन्स्ट |
लाभ
- डॉक्यूमेंटेशन: इंटेंट स्पष्ट करता है।
- कंपाइलर ऑप्टिमाइज़ेशन: रीड-ओनली मेमोरी (
.rodata) में रख सकता है। - सुरक्षा: आकस्मिक संशोधन रोकता है।
- सही फंक्शन सिग्नेचर:
void func(const int *ptr)- फंक्शन*ptrनहीं बदलेगा।
नोट
constऑब्जेक्ट का एड्रेस नॉन-कॉन्स्ट पॉइंटर को असाइन करना चेतावनी देता है (लेकिन अनुमत है)।- पॉइंटर के माध्यम से
constऑब्जेक्ट संशोधित करना **अनडिफाइंड बिहेवियर** है। - C++ में
constexpr(कंपाइल-टाइम कॉन्स्टेंट) औरconstमेम्बर फंक्शन्स भी हैं।