포인터 변수: 메모리 주소를 저장하기 위해 사용하는 변수
●사용법
일반적인 변수와 달리, 변수 앞에 ' * '를 붙여 사용한다.
●헷갈리는 이유
주소와 값이 다르다는 것을 이해하지 못했기 때문이다. 따로 나누어서 생각해보면 쉽게 이해할 수 있다.
●비유로 이해하기
설명에 앞서, 나는 설명에서 번호와 값을 구분하여 설명하고 있음을 명심해야 한다.
주소는 사물함에 이미 지정되어 있는 번호, 변수는 내가 지정한 이름, 값은 사물함에 넣은 물건으로 치환해서 생각해보자.
주소 = 사물함 번호
변수 = 내가 지정한 이름
값 = 물건
자, 일단 먼저 사물함에 이미 번호가 지정되어있다. 이 번호는 내가 지정한 번호가 아님을 명심하자.
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;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기 (0) | 2020.11.06 |
---|---|
C언어 18강)+ 포인터 변수 역참조 (0) | 2020.11.06 |
C언어 17강 다차원 배열 (0) | 2020.11.05 |
C언어 16강 순환 함수(재귀함수) (0) | 2020.11.03 |
C언어 15강 매개변수 전달방법 2.call by reference(참조에 의한 호출) (0) | 2020.11.03 |