프로그래밍 언어/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;
}

결괏값

참고사항

변수 선언 때도 *, 역참조 할 때도 *을 사용한다.

포인터를 선언할 때 * "이 변수가 포인터다"라고 알려주는 역할이고, 포인터에 사용할 때 * "포인터의 메모리 주소를 역참조 하겠다"라는 뜻 두 가지로 사용되는 것이므로 구분해서 이해하면 된다.