logo

C 역참조 포인터

우리가 이미 알고 있듯이 '포인터란 무엇인가' 에서 포인터는 다른 변수의 주소를 저장하는 변수입니다. 역참조 연산자는 (*)로 표시되는 간접 연산자라고도 합니다. 포인터 변수와 함께 간접 연산자(*)를 사용하면 다음과 같이 알려져 있습니다. 포인터 역참조. 포인터를 역참조하면 이 포인터가 가리키는 변수의 값이 반환됩니다.

역참조 포인터를 사용하는 이유는 무엇입니까?

포인터 역참조는 다음과 같은 이유로 사용됩니다.

  • 포인터가 가리키는 메모리 위치에 저장된 데이터에 액세스하거나 조작하는 데 사용할 수 있습니다.
  • 역참조된 포인터에 적용되는 모든 작업은 포인터가 가리키는 변수의 값에 직접적인 영향을 미칩니다.

포인터를 역참조하려면 다음 단계를 살펴보겠습니다.

  • 먼저 포인터가 가리키는 정수형 변수를 선언합니다.
 int x =9; 
  • 이제 정수 포인터 변수를 선언합니다.
 int *ptr; 
  • 정수 포인터 변수 선언 후 'x' 변수의 주소를 포인터 변수 'ptr'에 저장합니다.
 ptr=&x; 
  • 아래와 같이 포인터 'ptr'을 역참조하여 'x' 변수의 값을 변경할 수 있습니다.
 *ptr =8; 

위 줄은 'ptr'이 'x' 위치를 가리키고 'ptr'을 역참조하기 때문에 'x' 변수의 값을 9에서 8로 변경합니다. 즉, *ptr=8은 x의 값을 업데이트합니다.

위의 모든 단계를 결합해 보겠습니다.

 #include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;} 

산출

C 역참조 포인터

또 다른 예를 생각해 봅시다.

 #include int main() { int x=4; int y; int *ptr; ptr=&x; y=*ptr; *ptr=5; printf('The value of x is : %d',x); printf('
 The value of y is : %d',y); return 0; } 

위 코드에서:

  • 두 개의 변수 'x'와 'y'를 선언합니다. 여기서 'x'는 '4' 값을 보유합니다.
  • 포인터 변수 'ptr'을 선언합니다.
  • 포인터 변수를 선언한 후 'x' 변수의 주소를 포인터 'ptr'에 할당합니다.
  • 'ptr'에는 'x' 변수의 주소가 포함되어 있으므로 '*ptr'은 'x'와 동일합니다.
  • 'ptr' 변수를 사용하여 'x' 값을 'y'에 할당합니다. 즉, y=* ptr 'x' 변수를 사용하는 대신.

참고: 우리에 따르면 'x' 값을 변경하면 포인터 'ptr'이 'x' 변수의 주소를 보유하므로 'y' 값도 변경됩니다. 그러나 'y'는 값 '5'의 로컬 복사본을 저장하므로 이런 일은 발생하지 않습니다.

산출

C 역참조 포인터

또 다른 시나리오를 고려해 보겠습니다.

 #include int main() { int a=90; int *ptr1,*ptr2; ptr1=&a; ptr2=&a; *ptr1=7; *ptr2=6; printf('The value of a is : %d',a); return 0; } 

위 코드에서:

  • 먼저 'a' 변수를 선언합니다.
  • 그런 다음 ptr1과 ptr2라는 두 개의 포인터를 선언합니다.
  • 두 포인터 모두 'a' 변수의 주소를 포함합니다.
  • *ptr1에는 '7' 값을 할당하고 *ptr2에는 '6' 값을 할당합니다. 'a'의 최종 값은 '6'이 됩니다.

참고: 동일한 위치를 가리키는 포인터가 두 개 이상인 경우 한 포인터에 의한 변경 사항은 다른 포인터와 동일합니다.

산출

C 역참조 포인터