프로그래밍 언어/C
C언어 18강)+ 포인터 변수 역참조
happy_life
2020. 11. 6. 15:23
저번 시간에 주소를 저장하기 위해 포인터 변수를 사용한다고 했다. 그렇다면 포인터 변수의 역참조는 무엇일까?
포인터 변수 역참조
저장된 메모리 주소로 접근하여 거기 있는 값을 참조하는 것.
●사용법
포인터 변수 앞에 *을 넣어 사용 (값을 가져오거나 값을 저장하는 역할을 함)
●역참조로 값을 가져오는 코드 예제
#include <stdio.h>
int main() {
int a, * address;
a = 15;
address = &a; //&a = a의 주소번호
printf("a의 값: %d\n", a);
printf("a의 주소번호 address: %d\n", address);
printf("포인터 변수 address의 a값 역참조: %d\n", *address);
return 0;
}
●역참조로 값을 저장하는 코드 예제
#include <stdio.h>
int main()
{
int *numpoint; // 포인터 변수 선언
int num1 = 10; // 정수형 변수를 선언하고 10 저장
numpoint = &num1; // num1의 메모리 주소를 포인터 변수에 저장
printf("역참조 저장 전 메모리 주소의 값: %d\n", *numpoint); //역참조로 저장전 메모리 주소에 접근하여 도출 되는 값
*numpoint = 20; // 역참조 연산자로 메모리 주소에 접근하여 20을 저장
printf("역참조 저장 후 메모리 주소의 값: %d\n", *numpoint); // 20: 역참조 연산자로 메모리 주소에 접근하여 값을 가져옴
printf("원래 있던 num1의 값의 변화: %d\n", num1); // 20: 실제 num1의 값도 바뀜
return 0;
}
참고사항
변수 선언 때도 *, 역참조 할 때도 *을 사용한다.
포인터를 선언할 때 *는 "이 변수가 포인터다"라고 알려주는 역할이고, 포인터에 사용할 때 *는 "포인터의 메모리 주소를 역참조 하겠다"라는 뜻 두 가지로 사용되는 것이므로 구분해서 이해하면 된다.