728x90
C/C++에서 & 기호는 문맥에 따라 다양한 의미를 가지며, 매우 중요한 역할을 합니다. 아래에 그 용도를 모두 정리해볼게요:
🧠 1. 주소 연산자 (Address-of Operator)
- 사용 위치: 변수 앞
- 예시: int a = 10; int* p = &a;
- 설명: 변수의 메모리 주소를 가져옵니다. 포인터를 초기화하거나 함수에 주소를 전달할 때 사용됩니다.
🔁 2. 참조자 (Reference) [C++ 전용]
- 사용 위치: 변수 선언 시
- 예시: int a = 10; int& ref = a;
- 설명: 참조자는 기존 변수의 별칭(alias)입니다. ref를 수정하면 a도 같이 수정됩니다.
📦 3. 참조로 인수 전달 (Pass-by-Reference) [C++ 전용]
- 사용 위치: 함수 매개변수
- 예시:
void update(int& x) { x += 10; }
- 설명: 함수가 인수를 복사하지 않고 원본을 직접 수정할 수 있게 합니다.
🔍 4. 비트 AND 연산자 (Bitwise AND Operator)
- 사용 위치: 두 피연산자 사이
- 예시: int result = a & b;
- 설명: 두 정수의 각 비트를 AND 연산합니다. 예: 5 & 3 → 101 & 011 → 001 → 결과는 1
🧪 5. 주소 비교
- 예시:
if (&x == &y) { // x와 y가 같은 메모리 주소를 참조 }
- 설명: 두 변수의 주소가 같은지 비교할 수 있습니다.
🧵 6. 연산자 오버로딩에서의 참조 반환
- 예시:
class MyClass { int value; public: int& getValue() { return value; } };
- 설명: 참조를 반환하면 원본 데이터를 직접 수정할 수 있습니다.
💡 보너스 팁
- C에서는 참조가 없고 포인터만 존재합니다. &는 주소를 가져오는 용도로만 사용됩니다.
- C++에서는 참조 기능이 추가되어 &의 의미가 확장되었습니다.
필요하다면 각 용도에 대해 더 깊은 예제나 설명도 도와드릴 수 있어요. 어떤 부분이 가장 궁금하신가요?
728x90