मान लीजिए हमारे पास एक पूर्णांक चर है जिसका आकार 4 बाइट है, एक अन्य सूचक चर है, जिसका आकार 8 बाइट्स है। तो निम्न का आउटपुट क्या होगा?
उदाहरण
#include<iostream> using namespace std; main() { int a[4][5][6]; int x = 0; int* a1 = &x; int** a2 = &a1; int*** a3 = &a2; cout << sizeof(a) << " " << sizeof(a1) << " " << sizeof(a2) << " " << sizeof(a3) << endl; cout << (char*)(&a1 + 1) - (char*)&a1 << " "; cout << (char*)(&a2 + 1) - (char*)&a2 << " "; cout << (char*)(&a3 + 1) - (char*)&a3 << " "; cout << (char*)(&a + 1) - (char*)&a << endl; cout << (char*)(a1 + 1) - (char*)a1 << " "; cout << (char*)(a2 + 1) - (char*)a2 << " "; cout << (char*)(a3 + 1) - (char*)a3 << " "; cout << (char*)(a + 1) - (char*)a << endl; cout << (char*)(&a[0][0][0] + 1) - (char*)&a[0][0][0] << " "; cout << (char*)(&a[0][0] + 1) - (char*)&a[0][0] << " "; cout << (char*)(&a[0] + 1) - (char*)&a[0] << " "; cout << (char*)(&a + 1) - (char*)&a << endl; cout << (a[0][0][0] + 1) - a[0][0][0] << " "; cout << (char*)(a[0][0] + 1) - (char*)a[0][0] << " "; cout << (char*)(a[0] + 1) - (char*)a[0] << " "; cout << (char*)(a + 1) - (char*)a; }
इस प्रश्न को हल करने के लिए हम नीचे दिए गए कुछ महत्वपूर्ण बिंदुओं का अनुसरण कर सकते हैं -
-
पूर्णांक आकार 4-बाइट (32 बिट) है और सूचक आकार 8-बाइट है। यदि हम पॉइंटर के साथ 1 जोड़ते हैं, तो यह अगले तत्काल प्रकार को इंगित करेगा।
-
&a1 int** प्रकार का है, &a2 int*** है और &a3 int**** प्रकार का है। यहां सभी पॉइंटर्स की ओर इशारा कर रहे हैं। अगर हम 1 जोड़ते हैं, तो हम 8-बाइट जोड़ रहे हैं।
-
a[0][0][0] एक पूर्णांक है, &a[0][0][0] int* है, a[0][0] int* है, &a[0][0] int प्रकार का है (*)[6] इत्यादि। तो &a प्रकार का है int(*)[4][5][6].
आउटपुट
480 8 8 8 8 8 8 480 4 8 8 120 4 24 120 480 1 4 24 120