본문 바로가기
C , C++

C_ 포인터

by Edes Kim 2020. 6. 7.

[가정]

1157은 a가 저장한 값이 보관되어 있는 곳의 주소이고, b가 a의 값을 얻기 위해 주소를 가르키는 것이 '포인터'라는 개념이다.

포인터가 필요한 이유는 a의 값이 중간에 변하더라도 그때그때마다 달라진 값을 유동적으로 알아와야 하는 상황이 있기 때문이다.

a의 500이라는 값을 딱 지정해서 가져오지 않고 그 공간의 주소를 포인트 함으로서 그때의 a의 값을 가져올 수 있다.


[예시]

int a=20; 이 아닌 char a = ' c '; 였다면 char *ptr_a; 여야 한다.

* 를 붙여서 보통 변수와는 다른 포인터라는 변수임을 보여준다, &는 그 포인터가 가르키는 변수의 주소값이다.

 

prt_a 는 1636984 라는 주소값을 품고 있고,

     그렇기 때문데 그 주소에 저장되어 있는 (들어 있는) 순수한 값인 '20'을 *ptr_a의 값으로 가진다.

=> prt_a  1636984 이고,

    *prt_a 는 20 이다.


[포인터 만드는 법]

1. 포인트 하려는 변수에 맞게 *ptr_a를 선언해 준다.

2. prt_a를 포인트 하고싶은 변수의 주소값으로 대입한다. - 누구를 포인트해야 할지 지정.

3. 완성!

 

But!!!

원래..

int a = 10;              

int *prt_a;              

ptr = &a;                

이렇게 할거를

~이렇게도 할수도 있다.

int *ptr_a = &a; 는 아직 헷갈리니까 일단 이것만 예외로 생각 하자!


[예제]

1)

2)

포인트의 대상을 바꾸는 경우

3)

*ptr 를 사용하여 a의 값을 바꾸는 경우

4) 포인터 포인터

실제로는 잘 사용안함.


https://www.youtube.com/watch?v=wNPWpbS1PLU&list=PLlJhQXcLQBJqywc5dweQ75GBRubzPxhAk&index=29