역참조

위키원
audrbchzl (토론 | 기여)님의 2021년 7월 27일 (화) 14:44 판
이동: 둘러보기, 검색

역참조란 프로그래밍에서 포인터는 데이터가 저장된 주소값을 가리키지만 데이터가 저장된 주소로 가서 값에 접근 하는것을 역참조라고 한다.

개요

역참조는 값에 직접 접근하는것이 아닌 주소를 이용해 간접적으로 접근하는 것이다. 그래서 간접 연산자라고도 한다. 이제까지 함수에서 매개변수를 통해 인자를 전달하는 등 모든 데이터를 복사해서 썼다면 역참조를 하면 원본에 접근가능하다. 즉 컴퓨터 구조에서(CPU, 메모리 등) 데이터를 오랫동안 메모리에 저장할 수 있다.

  • 역참조 원리
  • 1. 포인터를 지정하고 있는 메모리 위치로 간다.
  • 2. 그곳에 저장된 값에 접근한다.[1]

예제

포인터 연산으로 조작한 메모리 주소도 역참조 연산을 사용하여 메모리에 접근할 수 있다. 다음 코드를 살펴보겠다.

#include <stdio.h>
int main()
{
   int numArr[5] = { 11, 22, 33, 44, 55 };
   int *numPtrA;
   int *numPtrB;
   int *numPtrC;

   numPtrA = numArr;    // 배열 첫 번째 요소의 주소를 포인터에 저장

   numPtrB = numPtrA + 1;    // 포인터 연산. numPtrA + 4바이트
   numPtrC = numPtrA + 2;    // 포인터 연산. numPtrA + 8바이트

   printf("%d\n", *numPtrB);    // 22: 역참조로 값을 가져옴, numArr[1]과 같음
   printf("%d\n", *numPtrC);    // 33: 역참조로 값을 가져옴, numArr[2]와 같음

   return 0;
}

각주

  1. hahehohoo, 〈포인터 이해하기2_참조와 역참조/역 참조 연산자〉, 《티스토리》, 2020-07-18

참고자료

같이 보기