& सिंबल C++ में एक ऑपरेटर के रूप में उपयोग किया जाता है। इसका उपयोग दो अलग-अलग स्थानों पर किया जाता है: एक बिटवाइज़ AND ऑपरेटर के रूप में और दूसरा पॉइंटर एड्रेस-ऑफ ऑपरेटर के रूप में।
बिटवाइज़ AND
बिटवाइज़ AND ऑपरेटर (&) पहले ऑपरेंड के प्रत्येक बिट की तुलना दूसरे ऑपरेंड के संबंधित बिट से करता है। यदि दोनों बिट्स 1 हैं, तो परिणाम बिट 1 सेट होता है। अन्यथा, परिणाम बिट 0 सेट होता है। बिटवाइज़ AND ऑपरेटर के दोनों ऑपरेंड इंटीग्रल टाइप के होने चाहिए।
उदाहरण
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // पैटर्न 0101 ...
unsigned short b = 0xAAAA; // पैटर्न 1010 ...
cout << hex << ( a & b ) << endl;
}
आउटपुट
इसका आउटपुट है –
0
एड्रेस-ऑफ ऑपरेटर
C++ दो पॉइंटर ऑपरेटर प्रदान करता है: एड्रेस-ऑफ ऑपरेटर (&) और इंडायरेक्शन ऑपरेटर (*)।
एक पॉइंटर एक वेरिएबल है जिसमें किसी अन्य वेरिएबल का एड्रेस होता है या आप कह सकते हैं कि एक वेरिएबल जिसमें किसी अन्य वेरिएबल का एड्रेस होता है, वह उस अन्य वेरिएबल को "पॉइंट टू" करता है। एक वेरिएबल किसी भी डेटा टाइप का हो सकता है जिसमें ऑब्जेक्ट, स्ट्रक्चर या फिर से पॉइंटर स्वयं शामिल है।
& ऑपरेटर (एड्रेस-ऑफ), * का पूरक है। यह एक यूनरी ऑपरेटर है जो अपने ऑपरेंड द्वारा निर्दिष्ट वेरिएबल (r-value) का एड्रेस लौटाता है। उदाहरण के लिए,
उदाहरण
#include <iostream>
using namespace std;
int main() {
int var;
int *ptr;
int val;
var = 3000;
// var का एड्रेस लें
ptr = &var;
// ptr पर उपलब्ध मान लें
val = *ptr;
cout << "Value of var :" << var << endl;
cout << "Value of ptr :" << ptr << endl;
cout << "Value of val :" << val << endl;
return 0;
}
आउटपुट
जब उपरोक्त कोड कंपाइल और एक्जीक्यूट होता है, तो यह निम्न परिणाम देता है –
Value of var :3000 Value of ptr :0xbff64494 Value of val :3000