안녕하세요.

 

포인터 변수가 다른 변수의 메모리 번지에 간접적으로 접근하여 그 변수의 값을 수정하는 방법에 대해 알아보도록 하겠습니다.

 

#include <stdio.h>

 

void main()

{

         int i = 1000;             //1000으로 초기화를 합니다.

         int* pi = &i              // i의 메모리 번지를 대입받습니다. 즉 1000을 받는 것이죠.

 

         *pi = 5;                       // i의 메모리 번지에 간접적으로 접근해서 5를 대입합니다.

          printf( "%d\n", i);      //여기서는 1000이아닌 바로 위함수에서 5를 대입했으니 5가 출력이됩니다.

          printf( "%d\n", *pi);  // 5가 출력이되고 i==*pi가 성립이됩니다.

 

위의 함수를 해보면 출력결과는

5

5  로 결과가 나옵니다.

 

여기서 알아야 할점은 메모리 직접 접근과 간접적으로 접근하는 것인데요. 간단히 알아보도록 하겠습니다.

1. 메모리 직접 접근 : 변수를 통해서 직접 접근을 하는방식

2. 메모리 간접 접근 : 포인터 변수를 사용하여 간접적으로 접근하는 방식