c++ - Size of string literal consisting of escaped characters -


प्रश्न में कोड:

  #include & lt; iostream & gt; # शामिल करें & lt; cstring & gt; नेमस्पेस एसटीडी का उपयोग करना; Int main () {cout & lt; & lt; आकार ("\ n \ r \ t") & lt; & lt; endl; // प्रिंट 4 cout & lt; & lt; स्ट्रेलन ("\ n \ r \ t") & lt; & lt; endl; // प्रिंट 3 वापसी 0; }  

मैं उलझन में हूँ क्योंकि मैंने हमेशा सोचा कि यह मानक है कि sizeof char हमेशा 1 बाइट है, लेकिन उपरोक्त कोड में, यह मुद्रण है 4. < / P>

क्या इस के लिए कोई स्पष्टीकरण है या क्या बचने वाले पात्रों के लिए इस नियम में एक अपवाद है? कृपया मुझे उजागर करें

यह

  "\ n \ r \ t " 

एक तथाकथित स्ट्रिंग शब्दशः है इसे शून्य में समापन के साथ एक निरंतर चरित्र सरणी के रूप में स्मृति में संग्रहीत किया जाता है। प्रत्येक बच पात्र एक चरित्र है।

तो इस स्ट्रिंग के शाब्दिक तीन स्पष्ट रूप से निर्दिष्ट वर्ण और टर्मिनैटिम शून्य हैं। कुल मिलाकर अक्षर में चार अक्षर हैं।

फ़ंक्शन strlen के लिए के रूप में तो यह शून्य को समाप्त करने के लिए ध्यान में नहीं आता है। इसलिए यह केवल तीन वर्णों की रिपोर्ट करेगा जो स्पष्ट रूप से स्ट्रिंग में निर्दिष्ट किए गए थे।

फ़ंक्शन strlen शून्य के रूप में समाप्त करने वाला चिह्न का उपयोग करता है जहां यह स्ट्रिंग में वर्णों को गिनने के लिए बंद कर देगा ।

ऑपरेटर sizeof के लिए के रूप में यह एक वस्तु द्वारा कब्जा कर बाइट्स में कुल स्मृति देता है। आपकी स्ट्रिंग के शब्दशः प्रकार का const char है [4] तब sizeof वापस आ जाएगा 4. स्ट्रिंग द्वारा कब्जा कर लिया बाइट्स में कुल स्मृति है।


Comments

Popular posts from this blog

c# - Reactive Extensions ControlScheduler -

ios - How to determine if NSLayoutConstraint is horizontal or vertical? -

javascript - Enable/Disable form elements and changing the values of button at a time? -