우리가 이미 알고 있듯이 '포인터란 무엇인가' 에서 포인터는 다른 변수의 주소를 저장하는 변수입니다. 역참조 연산자는 (*)로 표시되는 간접 연산자라고도 합니다. 포인터 변수와 함께 간접 연산자(*)를 사용하면 다음과 같이 알려져 있습니다. 포인터 역참조. 포인터를 역참조하면 이 포인터가 가리키는 변수의 값이 반환됩니다.
역참조 포인터를 사용하는 이유는 무엇입니까?
포인터 역참조는 다음과 같은 이유로 사용됩니다.
- 포인터가 가리키는 메모리 위치에 저장된 데이터에 액세스하거나 조작하는 데 사용할 수 있습니다.
- 역참조된 포인터에 적용되는 모든 작업은 포인터가 가리키는 변수의 값에 직접적인 영향을 미칩니다.
포인터를 역참조하려면 다음 단계를 살펴보겠습니다.
- 먼저 포인터가 가리키는 정수형 변수를 선언합니다.
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;}
산출
또 다른 예를 생각해 봅시다.
#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'의 로컬 복사본을 저장하므로 이런 일은 발생하지 않습니다.
산출
또 다른 시나리오를 고려해 보겠습니다.
#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'이 됩니다.
참고: 동일한 위치를 가리키는 포인터가 두 개 이상인 경우 한 포인터에 의한 변경 사항은 다른 포인터와 동일합니다.
산출