주소 연산자 (&)
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 3번째.
이제 포인터를 선언할 수 있게 되었으므로, 실제로 포인터에 메모리 주소를 저장하는 방법을 배워야 합니다. 주소 연산자(&)는 모든 변수의 메모리 주소를 얻는 핵심입니다.
변수 이름 앞에 & 연산자를 두면, 해당 변수가 저장된 메모리 주소를 반환합니다. 이것을 "이 변수는 메모리의 어디에 위치하나요?"라고 묻는 것으로 생각하면 됩니다.
int age = 25;
int *ptr;
ptr = &age; // 'age'의 주소를 'ptr'에 저장이 예제에서 &age는 age 변수의 메모리 주소를 제공합니다. 그런 다음 이 주소를 포인터 ptr에 할당합니다. 이제 ptr은 age 변수를 "가리킵니다".
주소 연산자(address-of operator)는 일반 변수와 포인터 사이의 가교 역할을 하기 때문에 필수적입니다. 이 연산자가 없다면 포인터에게 어떤 변수를 가리켜야 할지 알려줄 수 없습니다. 데이터 타입이 반드시 일치해야 한다는 점을 기억하세요. 정수의 주소는 정수형으로 선언된 포인터에만 할당할 수 있습니다.
챌린지
쉬움주소 연산자(address-of operator)를 사용하여 변수와 포인터를 연결하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
number라는 이름의 정수형 변수를 선언하고 42로 초기화합니다letter라는 이름의 문자형 변수를 선언하고 'X'로 초기화합니다num_ptr이라는 이름의 정수형 포인터를 선언합니다char_ptr이라는 이름의 문자형 포인터를 선언합니다- 주소 연산자를 사용하여
number의 주소를num_ptr에 할당합니다 - 주소 연산자를 사용하여
letter의 주소를char_ptr에 할당합니다 %p형식 지정자와printf를 사용하여 두 포인터에 저장된 주소를 출력합니다
출력은 다음과 같은 형식으로 포인터 주소를 표시해야 합니다:
Address of number: [address]
Address of letter: [address]실제 메모리 주소는 프로그램을 실행할 때마다 달라지지만, 형식과 레이블은 위에 표시된 것과 정확히 일치해야 합니다.
치트 시트
주소 연산자(&)는 변수의 메모리 주소를 반환합니다:
int age = 25;
int *ptr;
ptr = &age; // 'age'의 주소를 'ptr'에 저장주소 연산자는 변수와 포인터를 연결하는 데 필수적입니다. 데이터 타입이 일치해야 합니다. 즉, 정수형으로 선언된 포인터에는 정수형 변수의 주소만 할당할 수 있습니다.
printf를 사용하여 포인터 주소를 출력하려면 %p 형식 지정자를 사용하세요.
직접 해보기
#include <stdio.h>
int main() {
// TODO: 여기에 코드를 작성하세요
// 1. 변수 선언 및 초기화
// 2. 포인터 선언
// 3. 주소 연산자를 사용하여 주소 할당
// 4. 표시된 형식을 사용하여 주소 출력
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.