sizeof() का उपयोग करने के लिए, हम एक वेरिएबल x का उपयोग करके मान ले सकते हैं, &x का उपयोग करके, यह इसका पता प्रिंट करेगा। अब अगर हम &x का मान बढ़ाते हैं तो यह अलग-अलग तरीके से बढ़ सकता है। यदि केवल एक बाइट बढ़ा दी जाती है, तो इसका मतलब है कि यह चरित्र है, यदि बढ़ा हुआ मान 4 है, तो यह इंट या फ्लोट है और इसी तरह। तो &x + 1 और &x के बीच का अंतर लेकर, हम x का आकार प्राप्त कर सकते हैं।
यहां हम मैक्रो का उपयोग करेंगे क्योंकि फ़ंक्शन में डेटाटाइप परिभाषित नहीं है। और एक और बात, हम (char*) का उपयोग करके कास्टिंग कर रहे हैं, तो यह हमें बताएगा कि उस स्थान पर कितने वर्ण प्रकार के डेटा रखे जा सकते हैं। जैसा कि चरित्र एक बाइट डेटा लेता है।
उदाहरण
#include <stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) main(void) { int x = 10; char y = 'f'; double z = 254748.23; printf("size of x: %d\n", my_sizeof(x)); printf("size of y: %d\n", my_sizeof(y)); printf("size of z: %d\n", my_sizeof(z)); }
आउटपुट
size of x: 4 size of y: 1 size of z: 8