본문 바로가기

프로그래밍/프로그래밍_여러가지

C언어 포인터 - 역사상 가장 쉬운 설명

반응형

C언어 포인터 - 역사상 가장 쉬운 설명

 


맨 밑에 이야기가 하나 있다. 심심하면 먼저 읽어도 좋다.

만화라면 더 좋을 것 같다. 그래도 좀 더 이해를 도울 수 있을 거라 생각된다.

 

 


Q: 포인터(Pointer) 영어 뜻이 뭐냐?

A: 가리키는 것.

 

 

Q: 포인터는 왜 쓰냐?

A: 필요하니까 쓴다. 메모리를 효율적으로 사용할 수 있게 된다고 한다. 다른 이유들도 있을 것 같다.


그러니 우선은 다음으로 넘어가자.

 

 

 

보통은

 

'특정 데이터가 저장된 메모리의 주소를 저장하는 변수'

라고 정의하는 것 같은데

 


다른 말로 바꾸면

 

1. 어떤 변수이름에 '*'가 붙으면,

2. 주소가 전혀 다른 변수로 넘어가서,

3. 거기에 있는 값을 지지고 볶을 수 있다.

 

라고 해도 되지않을까 싶다.

 

 


두가지를 기억하자.

 

'*'는 포인터를 만들 때 필요하다.

'&'는 주소값을 넣을 때 필요하다.

 

 


코딩 순서는 이렇다.

 

1. 포인터 변수와 일반 변수 선언 --> int *p, int a

2. 포인터 변수에 일반 변수의 주소값 저장 --> p=&a
3. 포인터 변수만 가지고 지지고 볶기 --> *p=30

 

 

 

핵심예제

//------------------------------------------------------------------------------

 

int *p;   // 포인터 선언, 이제 p라는 변수는 포인터 역할을 하는거야.

int a=0;   // a라는 일반 변수를 선언, 동시에 a에 0을 집어 넣었어. 이제 a를 바꿔보려해.


p=&a;   // 이것이 꼭 필요해. &를 붙였으니 a의 주소값이 p에 들어가는거야. 0이 아니야. a의 주소값이야.


*p=10;   // a에 10을 저장하라는 말

*p=20;   // a에 20을 저장하라는 말

*p=30;   // a에 30을 저장하라는 말

 

//-------------------------------------------------------------------------------

 

 

 

 

그림을 준비했다. 어설프지만 메모리 구조이다.

 

 

 

 

 

 

 


실전예제

//-------------------------------------------------------------------------------

 

#include
int main()
{
   int* p;   // 포인터 선언, 이제 p라는 변수는 포인터 역할을 하는거야.
   int a = 0;   // a라는 일반 변수를 선언, 동시에 a에 0을 집어 넣었어. 이제 a를 바꿔보려해.

 

   p = &a;   // 이것이 꼭 필요해. &를 붙였으니 a의 주소값이 p에 들어가는거야. 0이 아니야. a의 주소값이야.

 

   *p = 10;   // a에 10을 저장하라는 말
   *p = 20;   // a에 20을 저장하라는 말
   *p = 30;   // a에 30을 저장하라는 말

 

   printf("a에 마지막으로 저장된 값 = %d\n", a);   // a에는 마지막으로 저장된 30 출력될거야.

 

   system("pause");   // 화면을 잠깐 멈추는 기능
   return 0;   // 끝
}

 

//---------------------------------------------------------------------------------

 

 

 

 

결과 화면

 

 

 

 

 

 

 

.

.


그냥 p는 p일 뿐이지만

*p의 p는 어떤 메모리의 주소값이다.

 

 


.

.


*를 장착한 p는

p가 가지고 있던 a의 주소로 곧바로 날아가

a를 만날 수 있었다.

아스테리스크를 장착한 피터는

그가 가지고 있던 에이미의 주소로 곧바로 날아가
에이미를 만날 수 있었다.

 

.

.


이야기를 하나 들려주지.

옛날에 아스테리스크라는 하늘을 나는 전설의 장비가 있었어.

그걸 몸에 장착하면 먼거리도 안전하고 빠르게 날아갈 수 있었지.

어느 마을에 피터라는 남자가 살고 있었어.

언젠가 그가 멀리 여행을 갔을 때 좋아하게 된 여자가 있었는데 그녀의 이름은 에이미였어.

그녀의 주소를 받고 돌아온 피터는 에이미에게 자주 찾아가고 싶었지만

깊은 산, 험한 골짜기가 가로막고 있었어.

아스테리스크가 없는 피터는 에이미의 주소만 갖고 있는 그냥 피터일 뿐이었어.

그래서 피터는 전설 속 장비인 아스테리스크를 찾기로 했어.

고생끝에 아스테리스크를 찾았고,

피터는 곧바로 아스테리스크를 몸에 장착했지.

피터는 그가 갖고 있던 에이미의 주소로 날아가 에이미를 만났어.

둘은 너무 반가웠고 함께 지지고 볶고 더욱 사랑하게 되었어.

이제 피터는 에이미가 보고싶을 때마다 아스테리스크를 이용해 에이미를 자주자주 만날 수 있게 되었어.

둘이 결혼해라.

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형