Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में ++*p, *p++ और *++p के बीच अंतर


इस सेक्शन में हम देखेंगे कि C++ में *ptr++, *++ptr और ++*ptr के बीच क्या अंतर हैं।

यहां हम C या C++ में पोस्टफिक्स++ और प्रीफिक्स++ की प्रीसिडेंस देखेंगे। प्रीफिक्स ++ या -- की प्रीसिडेंस डीरेफरेंस ऑपरेटर '‘*’' से अधिक होती है और पोस्टफिक्स ++ या -- की प्रीसिडेंस प्रीफिक्स ++ और डीरेफरेंस ऑपरेटर '‘*’' दोनों से अधिक होती है।

जब ptr एक पॉइंटर है, तो *ptr++ का अर्थ *(ptr++) होता है और ++*prt का अर्थ ++(*ptr) होता है

उदाहरण कोड

#include<iostream> using namespace std; int main() { char arr[] = "Hello World"; char *ptr = arr; ++*ptr; cout << *ptr; return 0; }

आउटपुट

I

तो यहां पहले ptr 'H' की ओर इशारा कर रहा है। ++*ptr का उपयोग करने के बाद यह H को 1 से बढ़ाता है, और अब मान 'I' है।

उदाहरण कोड (C++)

#include<iostream> using namespace std; int main() {    char arr[] = "Hello World";    char *ptr = arr;    *ptr++;    cout << *ptr;    return 0; }

आउटपुट

e

तो यहां पहले ptr 'H' की ओर इशारा कर रहा है। *ptr++ का उपयोग करने के बाद यह पॉइंटर को बढ़ाता है, इसलिए ptr अगले एलिमेंट की ओर इशारा करेगा। इसलिए परिणाम 'e' है।

उदाहरण कोड (C++)

#include<iostream> using namespace std; int main() {    char arr[] = "Hello World";    char *ptr = arr;    *++ptr;    cout << *ptr;    return 0; }

आउटपुट

e

इस उदाहरण में भी हम ++ का उपयोग करके ptr को बढ़ा रहे हैं, जहां प्री-इन्क्रीमेंट ++ की प्रीसिडेंस अधिक है, फिर यह पहले पॉइंटर को बढ़ाता है, फिर * का उपयोग करके मान लेता है। इसलिए यह 'e' प्रिंट कर रहा है।


  1. - C++ में new ऑपरेटर और operator new में क्या अंतर है?

    C++ में जब हम एक नया ऑब्जेक्ट बनाना चाहते हैं, तो हमें मेमोरी में एक मेमोरी ब्लॉक बनाना होगा, फिर उस मेमोरी ब्लॉक को आरंभ करने के लिए कंस्ट्रक्टर को भी कॉल करना होगा। हम new कीवर्ड का उपयोग करके मेमोरी एलिमेंट बना सकते हैं। यह new ऑपरेटर दो लगातार कार्य करता है। लेकिन operator new केवल मेमोरी स्पेस

  1. - C++ में 'struct' और 'typedef struct' में अंतर?

    C++ में, struct और typedef struct के बीच कोई अंतर नहीं है क्योंकि, C++ में, सभी struct/union/enum/class घोषणाएं ऐसा व्यवहार करती हैं जैसे वे इम्प्लिसिटली typedefed हैं, जब तक कि नाम उसी नाम की किसी अन्य घोषणा द्वारा छिपा नहीं जाता। हालांकि एक सूक्ष्म अंतर है कि typedefs को फॉरवर्ड डिक्लेयर नहीं किय

  1. - C++ स्ट्रिंग कॉन्स्टेंट्स और कैरेक्टर कॉन्स्टेंट्स में अंतर

    C++ में, सिंगल कोट्स में एक कैरेक्टर एक कैरेक्टर लिटरल है। इसका प्रकार char है। उदाहरण के लिए, a ASCII आधारित सिस्टम पर मान 97 के साथ char प्रकार का है। डबल कोट्स में एक कैरेक्टर या कैरेक्टर्स की स्ट्रिंग एक स्ट्रिंग लिटरल दर्शाती है। इसका प्रकार const char[] है और यह स्ट्रिंग की लंबाई + 1 के आकार