को मान निर्दिष्ट मैं सिर्फ सी सीखने शुरू कर दिया है और मैं विंडोज के लिए MinGW का उपयोग कर को समझने के लिए संकेत दिए गए काम के लिए कुछ सरल कार्यक्रमों बराबर चल रही है। मैंने कोशिश की है:सीधे सी प्वाइंटर
#include <stdio.h>
int main(){
int *ptr;
*ptr = 20;
printf("%d", *ptr);
return 0;
}
जो सही तरीके से संकलित, लेकिन यह काम नहीं करता है जब मैं निष्पादन योग्य चलाने - मूल्य कमांड लाइन करने के लिए मुद्रित नहीं है, बजाय मुझे लगता है कि exe फ़ाइल कहते हैं एक त्रुटि संदेश मिलता काम करना बंद कर दिया।
लेकिन जब मैं नीचे के रूप में दिखाया गया है कि चर की स्मृति पते पर एक पूर्णांक चर और आवंटित * ptr में मूल्य भंडारण की कोशिश की:
#include <stdio.h>
int main(){
int *ptr;
int q = 50;
ptr = &q;
printf("%d", *ptr);
return 0;
}
यह ठीक काम करता है।
मेरा प्रश्न है, मैं क्यों सीधे सूचक को एक शाब्दिक मान सेट करने में असमर्थ हूँ? मैंने पॉइंटर्स के लिए ट्यूटोरियल ऑनलाइन देखा है और उनमें से अधिकतर दूसरे उदाहरण के समान ही करते हैं।
किसी भी मदद की सराहना की है।
क्योंकि पॉइंटर प्रारंभ नहीं हुआ है - यह कहीं भी कहीं भी इंगित कर सकता है और प्रोग्राम को क्रैश कर सकता है। – Till
आप भाग्यशाली हो गए कि यह एक त्रुटि के साथ समाप्त हो गया। – JonnyRo
@ जोनीरो सही है। वास्तविक कोड में, इस प्रकार की बग सप्ताह के लंबे डिबगिंग सत्रों को समझने की कोशिश करती है कि क्यों कुछ अन्य चर कुछ समय में यादृच्छिक रूप से बदलते हैं (कभी भी जब आप वास्तव में इसके लिए परीक्षण नहीं कर रहे होते हैं, हमेशा जब आप कर रहे होते हैं एक सार्वजनिक प्रदर्शन) या सुरक्षा शोषण जहां कोई अलग-अलग मूल्यों को जोड़कर "is_admin" ध्वज को सत्य में सेट करता है। – abarnert