프로그래밍 언어/C

C언어 18강 쉽게 이해하는 주소와 포인터 설명

happy_life 2020. 11. 5. 15:51

 

 

포인터 변수: 메모리 주소를 저장하기 위해 사용하는 변수

 

 

사용법

일반적인 변수와 달리, 변수 앞에 ' * '를 붙여 사용한다.

 

 

헷갈리는 이유

주소와 값이 다르다는 것을 이해하지 못했기 때문이다. 따로 나누어서 생각해보면 쉽게 이해할 수 있다.

 

 

●비유로 이해하기

설명에 앞서, 나는 설명에서 번호와 값을 구분하여 설명하고 있음을 명심해야 한다.

주소는 사물함에 이미 지정되어 있는 번호, 변수는 내가 지정한 이름, 값은 사물함에 넣은 물건으로 치환해서 생각해보자.

 

주소 = 사물함 번호

변수 = 내가 지정한 이름

   값 = 물건

 

 

자, 일단 먼저 사물함에 이미 번호가 지정되어있다. 이 번호는 내가 지정한 번호가 아님을 명심하자.

143534664 225325234 31212323
412323 5544366 654654
7121243254 8523524 91244123

 

이제, 내가 친구에게 선물 받은 인형을 사물함에 넣으려고 한다. 인형을 사물함에 넣으려고 하는데 사물함 번호가 너무 복잡하다. 그래서 난 내가 넣을 사물함 이름을 복잡한 숫자 대신 "인형상자"라고  내맘대로 정한다음 , 사물함 담당자에게 인형을 건내준다. 그러면 담당자는 위에 보이는 9개의 칸 중 하나를 택해서 내 인형을 넣어준다. 나는 복잡한 사물한 번호를 외울 필요 없이 그저 "인형상자"만을 외워두고 있으면된다. 

"인형상자" 라고 말하면, 사물함 담당자는  예를 들어, 5544366 칸에서 내 인형을 꺼내 나에게 줄 것이다.

 

이제 코드를 보면서 완벽히 이해해보자.

 

포인터 코드 예제

#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);
	
	return 0;

}