Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

สัญลักษณ์ '&' ใน C++ มีประโยชน์อย่างไร?

สัญลักษณ์ & ใช้เป็นออปอเรเตอร์ใน 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