Menu
Coddy logo textTech

주소 연산자 (&)

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 3번째.

이제 포인터를 선언할 수 있게 되었으므로, 실제로 포인터에 메모리 주소를 저장하는 방법을 배워야 합니다. 주소 연산자(&)는 모든 변수의 메모리 주소를 얻는 핵심입니다.

변수 이름 앞에 & 연산자를 두면, 해당 변수가 저장된 메모리 주소를 반환합니다. 이것을 "이 변수는 메모리의 어디에 위치하나요?"라고 묻는 것으로 생각하면 됩니다.

int age = 25;
int *ptr;
ptr = &age;    // 'age'의 주소를 'ptr'에 저장

이 예제에서 &ageage 변수의 메모리 주소를 제공합니다. 그런 다음 이 주소를 포인터 ptr에 할당합니다. 이제 ptrage 변수를 "가리킵니다".

주소 연산자(address-of operator)는 일반 변수와 포인터 사이의 가교 역할을 하기 때문에 필수적입니다. 이 연산자가 없다면 포인터에게 어떤 변수를 가리켜야 할지 알려줄 수 없습니다. 데이터 타입이 반드시 일치해야 한다는 점을 기억하세요. 정수의 주소는 정수형으로 선언된 포인터에만 할당할 수 있습니다.

challenge icon

챌린지

쉬움

주소 연산자(address-of operator)를 사용하여 변수와 포인터를 연결하는 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. number라는 이름의 정수형 변수를 선언하고 42로 초기화합니다
  2. letter라는 이름의 문자형 변수를 선언하고 'X'로 초기화합니다
  3. num_ptr이라는 이름의 정수형 포인터를 선언합니다
  4. char_ptr이라는 이름의 문자형 포인터를 선언합니다
  5. 주소 연산자를 사용하여 number의 주소를 num_ptr에 할당합니다
  6. 주소 연산자를 사용하여 letter의 주소를 char_ptr에 할당합니다
  7. %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;
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Logic & Flow의 모든 레슨