본문 바로가기
컴퓨터 사이언스/C언어

[C언어] 포인터가 가리키는 메모리를 참조하는 * 연산자 예제

by 메리뉴데이 2020. 8. 10.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main(void) {
 
   int num1 = 100, num2 = 100// 변수 num1과 num2를 선언하고 각각 100으로 초기화
   
   int * ptr;  // 포인터 변수 ptr을 선언 
 
   ptr = &num1;  // 포인터 ptr이 num1을 가리키게 함
 
   (*ptr) += 20;  // num1 += 20 과 동일
 
   ptr = &num2;  // 포인터 ptr이 num2를 가리키게 함
 
   (*ptr) -= 20;  // num2 -= 20과 동일
 
   return 0;    
}
 
cs

 

이 소스코드에서

num1은 100에서 20이 증가된 120으로 다시 저장되고,

num2는 100에서 20이 감소된 80으로 다시 저장되게 된다.

 

여기서의 핵심은, 

ptr이 포인터로서 각각의 변수를 가리키면서 * 연산자를 통하여 가리키고 있는 변수의 메모리에 접근하여

*ptr이 가르키고 있는 변수 num1과 num2와 같이 쓰였다는 것이다. 

더불어 한 포인터가 가리키는 변수를 변경(num1->num2) 할 수 있다.