c - Sizeof pointer differs from its representation with printf? -


जब मैं करता हूँ

  int k = 9; Printf ("sizeof k:% zu \ n", आकारफ (& amp; amp; amp; amp;; k));   

मुझे आकार 8 के रूप में मिलता है। लेकिन जब मैं

  प्रिंटफ़ ("p:% p \ n", & amp; amp; k;   

मुझे 0x7fff57e3ba24 मिलता है। मैं देख सकता हूं कि यह 12 हेक्स नंबर है जिसका अर्थ है (1 हेक्स 4 बीट्स के बाद से) कि सूचक 48 बिट्स पर रखता है जो 6 बाइट्स है।

सवाल: क्यों आकार के आकार का प्रिंट 8 सूचक के लिए है, हालांकि इसकी केवल 6 बाइट्स? आपका तर्क यह है कि यदि मैं

  printf लिखता हूं ("%" डी ", 4);   

और यह 1 दशमलव अंक प्रिंट करता है, जो संभावित रूप से 1 बाइट में संग्रहीत किया जा सकता है, फिर sizeof (int) 1 बाइट होना चाहिए।

संख्या 0x7fff57e3ba24 समान है 0x00007fff57e3ba24 । सिर्फ इसलिए कि इस प्रकार की संख्या को कम से कम कर सकते हैं, इसका मतलब यह नहीं है कि यह किसी भी कम स्थान पर है।

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

c++ - Qt::make_shared for creating QSharedPtr as std::make_shared for creating std::shared_ptr -