C 언어에는 다양한 형식 지정자(format specifier)가 존재합니다. 그중에서도 이번 글에서는 %p라는 형식 지정자에 대해 알아보겠습니다.
%p는 포인터(pointer) 타입의 데이터를 출력할 때 사용되는 형식 지정자입니다. 포인터 변수가 담고 있는 메모리 주소 값을 화면에 표시해야 할 때 유용하게 활용됩니다.
아래 예제를 통해 %p의 동작 방식을 더 자세히 살펴보겠습니다.
예제 코드
#include<stdio.h>
main() {
int x = 50;
int *ptr = &x;
printf("The address is: %p, the value is %d", ptr, *ptr);
}실행 결과
The address is: 000000000022FE44, the value is 50
코드 설명
위 예제에서는 정수형 변수 x에 50을 저장하고, 포인터 변수 ptr이 x의 메모리 주소를 가리키도록 설정했습니다.
이후 printf 함수에서 두 가지 형식 지정자를 함께 사용했습니다.
- %p: 포인터 변수
ptr이 저장하고 있는 메모리 주소(000000000022FE44)를 출력합니다. - %d: 역참조 연산자(*)를 사용하여 포인터가 가리키는 실제 값(50)을 출력합니다.
출력 결과에서 볼 수 있듯이, %p는 메모리 주소를 16진수 형태로 표시합니다. 참고로 주소 값은 실행 환경이나 시스템마다 다르게 나타날 수 있습니다.