728x90
C/C++에서 &는 주소 연산자라고 불리며, 변수의 메모리 주소를 가져오는 데 사용됩니다. 이 개념은 포인터와 함께 매우 중요한 역할을 해요. 비유를 통해 쉽게 풀어볼게요:
🧠 기본 개념
int a = 10;
int* p = &a; // a의 주소를 p에 저장
- &a는 변수 a가 저장된 메모리 위치(주소)를 의미합니다.
- p는 그 주소를 저장하는 포인터 변수예요.
🎭 비유로 이해하기
📦 비유: 집 주소와 택배
- a는 집 안에 있는 사람입니다.
- &a는 그 사람의 집 주소예요.
- 포인터 p는 주소를 적은 택배 송장입니다.
예를 들어:
- 우리가 a = 10이라고 하면, 사람이 10개의 사과를 가지고 있는 것.
- &a는 "이 사람이 어디 사는지 알려줘!"라는 요청.
- 포인터는 "이 주소에 가면 사과를 가진 사람이 있어요!"라고 알려주는 역할.
🔍 왜 주소가 필요할까?
상황주소 연산자의 역할
함수에 값 전달 | 값을 복사하지 않고 원본 주소를 넘겨서 직접 수정 가능 |
동적 메모리 | new, malloc 등으로 할당된 메모리의 주소를 저장 |
배열 처리 | 배열의 시작 주소를 통해 반복적으로 접근 |
효율성 | 큰 데이터를 복사하지 않고 주소만 넘겨서 처리 속도 향상 |
✅ 실전 예시
void change(int* ptr) {
*ptr = 100;
}
int main() {
int a = 10;
change(&a); // a의 주소를 전달
printf("%d\n", a); // 출력: 100
}
- &a를 넘기면 함수가 a의 원본을 직접 수정할 수 있어요.
주소 연산자 &는 단순한 기호가 아니라, 데이터를 간접적으로 다루는 능력을 부여하는 도구예요.
728x90