c++ - How to retrieve size of a data type? -


चलो a एक सरणी हो तो a.size () और आकारफ़ (ए) ?

। आकार () कुछ भी वापस लौटा सकता है, यह कैसे लागू किया जाता है पर निर्भर करता है

फिर भी, । आकार () आमतौर पर एक कंटेनर का आकार दूसरे शब्दों में देता है - तत्वों की संख्या , कंटेनर में शामिल है।

sizeof ऑपरेटर एकीकृत ऑपरेटर है, जो स्टैक पर आवंटित बाइट्स की संख्या देता है। उदाहरण के लिए <प्री> चार [50]; चार * ख = नया खजाना [50]; कॉट एंड लेफ्ट एंड लेफ्टफ़ाइल आकार (ए) एंड एलटी एंड लेफ्टिनेंट '\ n'; कॉट एंड लेफ्ट एंड लेफ्टफ़ाइल आकार (बी);

प्रिंट 50 (जो 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; }   

पहला x 64 plarform पर, 104 प्रिंट होगा, क्योंकि हमारे पास 100 * sizeof (char) + sizeof (int) (= 4) ( नोट 104 mod 8 == 0 , आप देखेंगे क्यों);

दूसरा और तीसरा एक ही प्रिंट होगा लेकिन ध्यान दें , हमारे पास यहां संरेखण है! X64 पर, संरेखण 8 बी पर है, इसलिए आकारफ (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