c - Can we change the value of an object defined with const through pointers? -


<पूर्व> #include & lt; stdio.h & gt; Int main () {const a = 12; Int * p; P = & amp; a; * पी = 70; }

क्या यह काम करेगा?

यह "अपवादित व्यवहार, "जिसका अर्थ है कि मानक के आधार पर आप भविष्यवाणी नहीं कर सकते हैं कि जब आप इस कोशिश करेंगे तो क्या होगा यह विशेष मशीन, कंपाइलर और कार्यक्रम की स्थिति के आधार पर अलग-अलग बातें कर सकता है।

इस मामले में, सबसे अधिक बार क्या होगा कि उत्तर "हाँ" होगा। एक चर, कॉन्स्ट या नहीं, मेमोरी में सिर्फ एक स्थान है, और आप कन्स्टेनेस के नियमों को तोड़ सकते हैं और केवल इसे अधिलेखित कर सकते हैं। (बेशक यह एक गंभीर बग का कारण होगा यदि प्रोग्राम के कुछ अन्य भाग अपने कॉन्स्ट डेटा स्थिर होने पर निर्भर करता है!)

हालांकि कुछ मामलों में - सबसे अधिक const स्थिर डेटा - संकलक मेमोरी के केवल-पढ़ने के क्षेत्र में ऐसे चर डाल सकता है उदाहरण के लिए, एमएसवीसी, आम तौर पर निष्पादन योग्य के। टेक्स्ट खंड में स्थिर स्थैतिक डालता है, जिसका मतलब है कि ऑपरेटिंग सिस्टम एक सुरक्षा गलती को फेंक देगा अगर आप इसे लिखने की कोशिश करेंगे, और प्रोग्राम क्रैश हो जाएगा।

कंपाइलर और मशीन के कुछ अन्य संयोजन में, कुछ पूरी तरह से अलग हो सकता है। एक बात जो आप कर सकते हैं यह सुनिश्चित करने के लिए अनुमान लगाती है कि यह पैटर्न परेशान करेगा, जो आपके कोड को पढ़ना है।


Comments