का पता लेना चाहिए क्योंकि शीर्षक कहता है, मुझे हमेशा आश्चर्य है कि scanf
को address of
ऑपरेटर (&) लेना चाहिए।क्यों स्कैनफ को ऑपरेटर
उत्तर
क्योंकि सी में केवल "पास-बाय-वैल्यू" पैरामीटर हैं, इसलिए मूल्य को रखने के लिए 'चर' को पास करने के लिए, आपको अपना पता (या परिवर्तक को पॉइंटर) पास करना होगा।
क्योंकि इसे पढ़ने के लिए पता पता करने की आवश्यकता है। यदि आप एक सूचक के रूप में चर को घोषित करते हैं, तो scanf
को &
की आवश्यकता नहीं होगी।
जब आप मानक इनपुट डिवाइस (आमतौर पर कीबोर्ड) के साथ कुछ इनपुट करते हैं, तो डेटा जो stored
कहीं से आता है। आपको स्मृति में कहीं point
होना चाहिए ताकि डेटा वहां संग्रहीत किया जा सके। point
एक स्मृति स्थान के लिए, आपको उस स्थान के address
की आवश्यकता है। इसलिए आपको &
ऑपरेटर scanf()
के साथ उपयोग करके अपने चर के पते को पास करना होगा।
हर किसी ने अच्छी तरह से वर्णन किया है कि sscanf को कहीं भी डालने की आवश्यकता है, लेकिन इसे वापस क्यों नहीं करें? इसे कई चीजों को वापस करना होगा - यह एक से अधिक चर (प्रारूपण द्वारा संचालित) भर सकता है और यह एक int दर्शाता है कि उनमें से कितने चर भर गए हैं।
स्कैनफ "ऑपरेटर का पता नहीं लेता (&) "। इसमें सूचक लगता है। अक्सर आउटपुट वैरिएबल के पॉइंटर को स्कैनफ कॉल में ऑपरेटर के पते का उपयोग करके प्राप्त किया जाता है, उदा।
int i;
scanf("%i", &i);
printf("number is: %d\n", i);
लेकिन ऐसा करने का यह एकमात्र तरीका नहीं है। पीछा कर रहा है बस के रूप में मान्य:
int* iPtr = malloc(sizeof(int));
scanf("%i", iPtr);
printf("number is: %d\n", *iPtr);
तो है:
int i;
int iPtr = &i;
scanf("%i", iPtr);
printf("number is: %d\n", i);
के रूप में मान स्मृति संबोधन में, संग्रहीत करने के लिए (कहाँ?) जा रहा है। इसलिए scanf() के साथ सौदों (&) ऑपरेटर।
- 1. स्कैनफ
- 2. स्कैनफ की आवश्यकता क्यों है?
- 3. स्कैनफ() उत्सुक व्यवहार!
- 4. ऑपरेटर() को ओवरराइड क्यों करें?
- 5. स्कैनफ ("% * s") और स्कैनफ ("% * डी") प्रारूप पहचानकर्ता क्या है?
- 6. स्कैनफ प्राप्त हो रहा है
- 7. सी ++ 0x में ऑपरेटर क्यों है ... ऑपरेटर?
- 8. डायनामिक स्ट्रिंग इनपुट - स्कैनफ ("% as")
- 9. क्यों कॉल ऑपरेटर नई स्पष्ट
- 10. स्कैनफ() को युगल के लिए "% lf" क्यों चाहिए, जब printf() केवल "% f" के साथ ठीक है?
- 11. जबकि-लूप दूसरी बार स्कैनफ को अनदेखा करता है
- 12. सी रिटर्न में क्या स्कैनफ फ़ंक्शन?
- 13. '&' ऑपरेटर को समझना
- 14. प्रिंटफ/स्कैनफ बनाम cout/cin का उपयोग कब करें?
- 15. = ~ ऑपरेटर को कभी-कभी दुष्प्रभाव क्यों होते हैं?
- 16. डिलीट ऑपरेटर को स्थिर होने की आवश्यकता क्यों है?
- 17. आप '।' को अधिभार क्यों नहीं दे सकते सी ++ में ऑपरेटर?
- 18. क्यों रूबी केवल कुछ ऑपरेटर ओवरलोडिंग को अनुमति देता है
- 19. क्यों सी # ऑपरेटर अधिभार स्थिर होना चाहिए?
- 20. हमें "हटाएं []" ऑपरेटर की आवश्यकता क्यों है?
- 21. क्यों बढ़ावा करता :: संस्करण प्रदान नहीं ऑपरेटर! =
- 22. पाइप ऑपरेटर क्यों काम करता है?
- 23. '-' ऑपरेटर
- 24. असाइनमेंट ऑपरेटर कॉल कन्स्ट्रक्टर क्यों करता है?
- 25. अगर कोई शिकायत करता है(), स्कैनफ ("% s", ...) के साथ ऐसा क्यों नहीं करते?
- 26. क्यों नहीं मिलता है() स्कैनफ() के बाद एंटर दबाए जाने के लिए प्रतीक्षा करें?
- 27. मैं [] ऑपरेटर को सी #
- 28. वाक्यविन्यास-त्रुटि: ऑपरेटर को
- 29. तार्किक या बिटवाइज़ OR ऑपरेटर बनाम ऑपरेटर
- 30. | ऑपरेटर बनाम || ऑपरेटर
इसके लिए धन्यवाद आदमी। –