Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

एसी/सी++ सूचक पहेली?

मान लीजिए हमारे पास एक पूर्णांक चर है जिसका आकार 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

  1. putwchar () सी/सी ++ में समारोह

    इस लेख में हम C++ STL में putwchar() फंक्शन की कार्यप्रणाली, सिंटैक्स और उदाहरणों पर चर्चा करेंगे। पुटवचर () क्या है? putwchar() फ़ंक्शन C++ STL में एक इनबिल्ट फ़ंक्शन है, जिसे हेडर फ़ाइल में परिभाषित किया गया है। putwchar () फ़ंक्शन का उपयोग मानक आउटपुट डिवाइस पर विस्तृत वर्ण लिखने के लिए किया जा

  1. memcpy() सी/सी++ में

    इस लेख में हम C++ STL में memcpy() फंक्शन की कार्यप्रणाली, सिंटैक्स और उदाहरणों पर चर्चा करेंगे। memcpy() क्या है? memcpy() फ़ंक्शन C++ STL में एक इनबिल्ट फ़ंक्शन है, जिसे हेडर फ़ाइल में परिभाषित किया गया है। memcpy () फ़ंक्शन का उपयोग मेमोरी के ब्लॉक को कॉपी करने के लिए किया जाता है। इस फ़ंक्शन क

  1. सी/सी ++ में एए पेड़?

    कंप्यूटर विज्ञान में AA ट्री को संतुलित ट्री के रूप में परिभाषित किया गया है, जो ऑर्डर किए गए डेटा को कुशलतापूर्वक संग्रहीत करने और पुनर्प्राप्त करने के लिए लागू किया गया है। एए पेड़ों को लाल-काले पेड़ की विविधता के रूप में माना जाता है, बाइनरी सर्च ट्री का एक रूप जो प्रविष्टियों के कुशल जोड़ और विल