สัญลักษณ์ &ถูกใช้เป็นตัวดำเนินการในภาษา C++ มันถูกใช้ใน 2 ตำแหน่งที่แตกต่างกัน หนึ่งเป็นบิตและโอเปอเรเตอร์ และอีกแห่งเป็นที่อยู่ตัวชี้ของโอเปอเรเตอร์
ระดับบิตและ
ตัวดำเนินการระดับบิต AND (&) เปรียบเทียบแต่ละบิตของตัวถูกดำเนินการแรกกับบิตของตัวถูกดำเนินการที่สอง ถ้าทั้งสองบิตเป็น 1 บิตจะถูกตั้งค่าเป็น 1 มิฉะนั้น บิตจะถูกตั้งค่าเป็น 0 ตัวถูกดำเนินการทั้งสองเป็นบิตและตัวดำเนินการระดับบิตจะต้องเป็นประเภทอินทิกรัล
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
unsigned short a = 0x5555; // pattern 0101 ...
unsigned short b = 0xAAAA; // pattern 1010 ...
cout << hex << ( a & b ) << endl;
} ผลลัพธ์
สิ่งนี้ให้ผลลัพธ์ -
0
ที่อยู่ของตัวดำเนินการ
C++ จัดเตรียมโอเปอเรเตอร์สองตัว ได้แก่ ที่อยู่ของตัวดำเนินการ (&) และตัวดำเนินการทางอ้อม (*)
ตัวชี้เป็นตัวแปรที่มีที่อยู่ของตัวแปรอื่นหรือคุณสามารถพูดได้ว่าตัวแปรที่มีที่อยู่ของตัวแปรอื่นนั้นเรียกว่า "ชี้ไปที่" ตัวแปรอื่น ตัวแปรอาจเป็นข้อมูลประเภทใดก็ได้ รวมถึงวัตถุ โครงสร้าง หรือตัวชี้อีกครั้ง
ที่อยู่ของ Operator (&) และเป็นส่วนเสริมของ *. เป็นตัวดำเนินการเอกพจน์ที่ส่งกลับที่อยู่ของตัวแปร(r-value) ที่ระบุโดยตัวถูกดำเนินการ ตัวอย่างเช่น
ตัวอย่าง
#include <iostream>
using namespace std;
int main () {
int var;
int *ptr;
int val;
var = 3000;
// take the address of var
ptr = &var;
// take the value available at 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