주소 연산자 (&)
Coddy C 여정의 논리 & 흐름 섹션에 포함된 레슨. 63개 중 3번째.
이제 포인터를 선언할 수 있으므로, 포인터에 메모리 주소를 실제로 저장하는 방법을 배워야 합니다. 주소 연산자(&)는 모든 변수의 메모리 주소를 가져오는 핵심입니다.
변수 이름 앞에 & 연산자를 배치하면 해당 변수가 저장된 메모리 주소를 반환합니다. 이를 "이 변수는 메모리에서 어디에 저장되어 있을까?"라고 묻는 것이라고 생각해 보세요.
int age = 25;
int *ptr;
ptr = &age; // 'age'의 주소를 'ptr'에 저장이 예제에서 &age는 age 변수의 메모리 주소를 제공합니다. 그런 다음 이 주소를 포인터 ptr에 할당합니다. 이제 ptr은 age 변수를 “가리킵니다”.
주소 연산자는 일반 변수와 포인터를 연결하는 다리이므로 필수적입니다. 주소 연산자가 없다면 포인터가 어떤 변수를 가리켜야 하는지 지정할 수 없습니다. 데이터 유형이 일치해야 한다는 점을 기억하세요. 정수로 선언된 포인터에는 정수의 주소만 할당할 수 있습니다.
챌린지
쉬움주소 연산자를 사용하여 변수를 포인터와 연결하는 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]실제 메모리 주소는 프로그램을 실행할 때마다 달라질 수 있지만, 형식과 레이블은 위에 표시된 것과 정확히 일치해야 합니다. [address]는 출력되는 주소를 위한 자리 표시자이므로 대괄호는 출력하지 마세요.
직접 해보기
#include <stdio.h>
int main() {
// TODO: 여기에 코드를 작성하세요
// 1. 변수를 선언하고 초기화하세요
// 2. 포인터를 선언하세요
// 3. 주소 연산자를 사용하여 주소를 할당하세요
// 4. 표시된 형식을 사용하여 주소를 출력하세요
return 0;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 & 흐름의 모든 레슨
직접 연습해 보세요: 온라인 C 컴파일러