इस खंड में, हम देखेंगे कि C++ में *ptr++, *++ptr और ++*ptr के बीच क्या अंतर हैं।
यहां हम C या C++ में पोस्टफिक्स++ और प्रीफिक्स++ की प्राथमिकता देखेंगे। प्रीफिक्स ++ या -- की प्राथमिकता डीरेफरेंस ऑपरेटर '*' से अधिक होती है और पोस्टफिक्स ++ या -- की प्राथमिकता प्रीफिक्स ++ और डीरेफरेंस ऑपरेटर '*' दोनों से अधिक होती है।
जब ptr एक पॉइंटर है, तो *ptr++ का अर्थ *(ptr++) होता है और ++*ptr का अर्थ ++(*ptr) होता है।
उदाहरण कोड 1
#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' है।
उदाहरण कोड 2
#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' है।
उदाहरण कोड 3
#include<iostream>
using namespace std;
int main() {
char arr[] = "Hello World";
char *ptr = arr;
*++ptr;
cout << *ptr;
return 0;
}
आउटपुट
e
इस उदाहरण में भी हम ++ का उपयोग करके ptr को बढ़ा रहे हैं, जहां प्री-इंक्रीमेंट ++ की प्राथमिकता अधिक है, फिर यह पहले पॉइंटर को बढ़ाता है, फिर * का उपयोग करके मान लेता है। इसलिए यह 'e' प्रिंट कर रहा है।