สัญลักษณ์ & ใช้เป็นออปอเรเตอร์ใน C++ ใช้ใน 2 ที่แตกต่างกัน คือ เป็นออปอเรเตอร์บิตวายส์ AND (bitwise AND) และออปอเรเตอร์ที่อยู่ของตัวชี้ (address-of operator)
Bitwise AND
ออปอเรเตอร์บิตวายส์ AND (&) เปรียบเทียบแต่ละบิตของออเปอรันด์แรกกับบิตที่ตรงกันของออเปอรันด์ที่สอง หากทั้งสองบิตเป็น 1 บิตผลลัพธ์จะเป็น 1 มิฉะนั้นจะเป็น 0 ทั้งสองออเปอรันด์ต้องเป็นชนิดอินทิเจอร์ (integral types)
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // รูปแบบ 0101 ...
unsigned short b = 0xAAAA; // รูปแบบ 1010 ...
cout << hex << ( a & b ) << endl;
}
ผลลัพธ์
0
Address-of Operator (ออปอเรเตอร์ที่อยู่)
C++ มีออปอเรเตอร์ตัวชี้ 2 ตัว คือ Address-of Operator (&) และ Indirection Operator (*)
ตัวชี้ (pointer) คือตัวแปรที่เก็บที่อยู่ของตัวแปรอื่น หรือพูดได้ว่าตัวแปรที่เก็บที่อยู่ของตัวแปรอื่น ถูกกล่าวว่า "ชี้ไปยัง" ตัวแปรอื่น ตัวแปรสามารถเป็นชนิดข้อมูลใดก็ได้ รวมถึงออบเจ็กต์, โครงสร้าง (structure) หรือตัวชี้อีกตัว
Address-of Operator (&) เป็นคู่ของ * เป็นออปอเรเตอร์ยูนารี (unary) ที่คืนที่อยู่ของตัวแปร (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