반응형
참조와 역참조/간접연산자/ 역 참조 연산자 *
포인터는 데이터가 저장된 주소값을 가리킵니다. 이것을 참조라고 합니다.
그럼 역 참조란 무엇일까요?
데이터가 저장된 주소로 가서 값에 접근하는 것을 말합니다.
값에 직접 접근하는게 아니라 주소를 이용해 간접적으로 접근합니다. 그래서 간접(indirect) 연산자라고도 합니다.
이제까지 함수에서 매개변수를 통해 인자를 전달하는 등 모든 데이터를 복사해서 썼다면 '역 참조'를 하면 원본에 접근가능합니다.
즉, 컴퓨터 구조에서(CPU든, 메모리든) 데이터를 오랫동안 메모리에 저장할 수 있습니다.
< 역 참조 원리 >
1 포인터가 저장하고 있는 메모리 위치로 간다
2 그곳에 저장된 값에 접근한다. (= 포인터가 가리키는 값에 접근하다)
역 참조 연산자 *
※ 곱하기 연산자 아닙니다.
- 곱하기 연산자는 피연산자 2개,
- 역 참조 연산자는 피연산자 1개
const int result = num1 * num2; /*곱하기 연산자, 항이 2개임 */
printf("num : %d\n", *num); /* 역참조 연산 */
※ 포인터 변수 선언 연산자도 아닙니다.
역 참조를 이용해 이렇게 값을 변경할 수 있습니다.
int score = 100;
int* pointer = &score; /* 포인터 변수 선언 */
*pointer = 50; /* 역 참조 */
-----------------------------------
-----------------------------------
반응형
'컴퓨터 공학 > C, C++' 카테고리의 다른 글
[ C ] 포인터 이해하기4_값에 의한 전달 vs 참조에 의한 전달/from 윤성우 or 포프 (389) | 2020.07.18 |
---|---|
[ C ] 포인터 이해하기3_포인터와 배열의 차이 (400) | 2020.07.18 |
[ C ] 포인터 이해하기1_포인터 변수란?/선언 방법 / & 연산자 (393) | 2020.07.17 |
[ C ] 메모리 이해하기11_동적 메모리의 소유권 문제 (398) | 2020.07.17 |
[ C ] 메모리 이해하기10 _정적 vs 동적 메모리 (398) | 2020.07.17 |
댓글