프로그래밍/C 기초

[C언어 강좌] #35 포인터 *연산자

도끼_Dokki 2017. 1. 10. 09:00

이번에 배울것은 포인터 *연산자입니다.

*연산자는 우리가 곱셈을 하는 연산자로 많이 사용했었죠. 그리고 포인터를 선언할때도 사용했었습니다.

하지만 이것도 &와 마찬가지로 포인터에서는 다르게 쓰입니다. 피연산자가 두개가 아닌 오른쪽에 한개만 있을경우 다르게 쓰입니다.


우리는 포인터를 선언하고 포인터가 특정한 메모리영역을 가리키게 할수 있습니다.

근데 그래서 어떻게할까요? 아직까지 포인터는 아무데도 쓸수가 없었습니다.

하지만 오늘 *연산자를 배우고나면 포인터를 사용할수 있게됩니다.


*연산자는 포인터가 가리키고있는 메모리 공간에 접근할수 있습니다.

포인터에 저장되있는 주소가 005f123이라고 하면 *연산자를 사용할경우 005f123번째 메모리 영역에 접근하게됩니다.



이런식으로 포인터가 가리키는 메모리영역에 접근해서 그 값을 출력시킬수 있습니다.



또한 이렇게 값을 저장하는것도 가능합니다.


포인터 변수인 pnum은 num을 가리키고있기때문에 *연산자로 pnum이 가리키고있는 메모리 영역에 접근하면 그곳은 num의 메모리영역입니다.

즉 위 예제에서 *pnum은 num을 쓴것과 똑같은 효과를 볼수있습니다.


포인터가 가리키는곳은 중간에 바꿀수도 있기때문에 첫번째 출력에서의 pnum과 두번째 출력의 pnum은 다른 변수를 가리키고있습니다.

그리고 *pnum += 30을 할때는 num의 값을 변경시켰고 *pnum += 10을 할때는 num2의 값을 변경시킨것입니다.