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
Post a Comment