สัญลักษณ์ &ถูกใช้เป็นตัวดำเนินการในภาษา 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