चलो फिर भी, प्रिंट 50 (जो दूसरे शब्दों में, आप बेहतर अन्य उदाहरण: पहला x 64 plarform पर, 104 प्रिंट होगा, क्योंकि हमारे पास दूसरा और तीसरा एक ही प्रिंट होगा लेकिन ध्यान दें , हमारे पास यहां संरेखण है! X64 पर, संरेखण 8 बी पर है, इसलिए इसलिए, जब आप सूची के बारे में अपने प्रश्न, इस पर एक नज़र डालें: सभी ऑपरेटरों a एक सरणी हो तो
a.size () और
आकारफ़ (ए) ?
। आकार () कुछ भी वापस लौटा सकता है, यह कैसे लागू किया जाता है पर निर्भर करता है
। आकार () आमतौर पर एक कंटेनर का आकार दूसरे शब्दों में देता है - तत्वों की संख्या , कंटेनर में शामिल है।
sizeof ऑपरेटर एकीकृत ऑपरेटर है, जो स्टैक पर आवंटित बाइट्स की संख्या देता है। उदाहरण के लिए <प्री>
चार [50]; चार * ख = नया खजाना [50]; कॉट एंड लेफ्ट एंड लेफ्टफ़ाइल आकार (ए) एंड एलटी एंड लेफ्टिनेंट '\ n'; कॉट एंड लेफ्ट एंड लेफ्टफ़ाइल आकार (बी);
50 * sizeof (char) = 50 * 1 = 50 है), और दूसरा लाइन 8 प्रिंट करता है - क्योंकि यह आकार सूचक ( मेरी मशीन x64 है, इसलिए, यह 8 है, अगर मेरे पास 32 बिट सीपीयू है, तो यह 4 होगा)।
cout & lt; & lt; Sizeof (* b); सूचक के रूप में
* b को प्रिंट करेगा और सरणी का पहला तत्व देता है (यह
sizeof (b [0]) के समान है जो
sizeof (char) )
। आकार () पर निर्भर हैं यदि आप चाहते हैं तत्वों की संख्या देखें, यदि यह एक कंटेनर है और यदि वह ऐसी विधि प्रदान करता है, तो निश्चित रूप से।
class A {int a; चार बी [100]; }; वर्ग बी {int a; चार * ख; सार्वजनिक: बी () {बी = नया चॉयर [100]; } ~ बी () {हटाएं] [] बी; }}; इंट मुख्य () {कॉट एंड एलटी एंड लेफ्टफ़ाइल आकार (ए) & amp; एलटी एंड एलटी '\ n'; कॉट एंड लेफ्ट एंड लेफ्टफ़ाइल आकार (बी) एंड एलटी एंड एलटी '\ n'; बी बी; कॉट एंड लेफ्ट एंड लेफ्टफ़ाइल आकार (बी) एंड एलटी एंड एलटी '\ n'; वापसी 0; }
100 * sizeof (char) + sizeof (int) (= 4) ( नोट
104 mod 8 == 0 , आप देखेंगे क्यों);
आकारफ (char *) देता है 8,
आकार (int) देता है 4 और यह 12 बनाता है। लेकिन
12 mod 8 == 4 जो है! = 0, संरेखण के कारण,
sizeof (B) प्रिंट 16 (16 mod 8 == 0)।
sizeof का उपयोग करते हैं, तो बहुत सावधान रहें ..
उम्मीद है कि मदद करता है (:
सूची में & amp; lt पूर्णांक में & amp; ग्त लिंट; सूची में & amp; lt चार & amp; gt lchar; अदालत में & amp; lt & amp; lt sizeof (फाहा) & amp ; lt & amp; lt '\ n'; अदालत में & amp; lt & amp; lt lint.size () & amp; lt & amp; lt '\ n'; अदालत में & amp; lt & amp; lt sizeof (lchar) & amp; lt & amp; lt '\ n'; Lint.push_back (10); lint.push_back (10); कॉट एंड लेफ्ट एंड लेफ्टिनेंट lint.size () और लेफ्टिनेंट एंड लेफ्टिनेंट '\ n' cout एंड लेफ्ट एंड लेफ्टिफायर आकार (लिंट) एंड एलटी एंड लेफ्टिनेंट '\ N';
sizeof उसी को प्रिंट करेंगे, यह
std :: list के कार्यान्वयन पर निर्भर करता है। पहला
। आकार () 0 पर वापस लौटेगा, क्योंकि कोई भी तत्व नहीं है, और दूसरी बार 2 लौटाएगा, क्योंकि हमारे पास सूची में 2 तत्व हैं।
Comments
Post a Comment