c - Please explain this strange output -
# शामिल हैं & lt; stdio.h & gt; # से & lt में शामिल हैं, conio.h & gt; शून्य प्रिंट (चार * arr); शून्य मुख्य () {clrscr (); चार ताइप = 'आर'; प्रिंट (& amp; अस्थायी); getch (); } शून्य प्रिंट (char * arr) {int arrsz = sizeof (arr); Printf ("आकार% d" है, sizeof (arr)); Printf ("char है% c", arr); }
मुझे यह आउटपुट क्यों मिलता है?
आकार 1 वर्ण है
निश्चित रूप से यह कहना चाहिए char is r
?
आप पते का उपयोग मूल्य का उपयोग नहीं करते
printf ("char है% c", * arr);
इसे समझने के लिए डिबगर के माध्यम से इसे चलाने की कोशिश करें, और कृपया एक वास्तविक प्रश्न पूछें, जैसे कि आपको क्या करना चाहिए, और इसके बजाय आप जो देख रहे हैं ऐसा करने से आप अपने प्रश्न के अधिकांश जवाब खुद जवाब देंगे।
वैसे, एक बार प्रिंट में, एआर एक स्थानीय वैरिएबल है, और आकार के मूल सरणी के आकार को जानने के लिए कोई रास्ता नहीं है, इसलिए यह आकार 4 प्रिंट करना चाहिए। नीचे दिया गया कोड इस व्यवहार को दिखाता है, और जब आकार के आकार की बात आती है तो सरणी और पॉइंटर्स के बीच का अंतर। यदि आप कोशिश करते हैं
संपादित करें: डैनियल की टिप्पणी के लिए धन्यवाद, वास्तव में सिर्फ अनुमान लगाए जाने के बजाय मैं वास्तव में परीक्षण किया गया कोड बदल गया है
#include & lt; stdio.h & gt; शून्य प्रिंट (चार *); Int main (int argc, char ** argv) {char temp = 'r'; चार ताइप 2 [] = {'ए', 'बी'}; चार मंदिर [] = {'आर'}; प्रिंट (& amp; अस्थायी); प्रिंट (temp2); प्रिंट (temp3); Printf ("आकार का अस्थायी% d \ n", sizeof (& amp; temp)); Printf ("आकार का temp2 है% d \ n", आकार (temp2)); Printf ("आकार का temp3% d \ n", आकार (temp3)); वापसी 0; } शून्य प्रिंट (char * arr) {printf ("आर्म का आकार% d \ n", आकार (arr) है); Printf ("arr में% c \ n", * arr); }
आप प्राप्त करते हैं:
arr का आकार 4 एआर है जिसमें एआर के आकार का आकार 4 एआर है जिसमें आईआर का आकार 4 एआर होता है Temp 4 आकार का temp2 है 2 आकार का temp3 1
Comments
Post a Comment