44.5 연습문제: 포인터 연산으로 메모리 주소 조작하기

다음 소스 코드를 완성하여 00000008과 00000014가 각 줄에 출력되게 만드세요.

practice_pointer_add.c

#include <stdio.h>

int main()
{
    int *numPtrA = NULL;

    printf("%p\n", numPtrA                );
    printf("%p\n", numPtrA                );

    return 0;
}

실행 결과

00000008
00000014

정답

numPtrA + 2
numPtrA + 5

해설

numPtrA의 자료형은 int이므로 4바이트씩 포인터 연산을 합니다. 또한, printf에서 %p로 출력하면 16진수로 표시됩니다. 따라서 00000000에서 00000008이 나오려면 numPtrA에 2를 더해주고, 00000014가 나오려면 numPtrA에 5를 더해주면 됩니다(16진수 14는 10진수 20).