티스토리 뷰

반응형

[서론]

8년전 C를 처음 접하고 그 과목 F를 맞고 펑펑 놀다가 4학년 즈음 부터는 java를 주로 사용하면서 C를 사용조차 안했다. 이번에 한 오픈소스를 보면서(아직.. 시작 단계) C를 접하게 되었는데 정확히는 C++이지만, 포인터 개념이 너무나도 기억이 나지 않아서 정리하기로 마음 먹었다.

포인터는 처음 C를 접했을 때 상당히 이해하기 힘들었던 부분이 였다. 그 당시에는 malloc이 어떻게 동작하는지도 모르고 사용하고 포인터는 이해 조차 못한채 사용을 안했던거 같았는데 그래도 지금 보니까 이렇게 재밌는게 있을 수가 있나? 라는 생각이 든다. 

이번 포스팅 에서는 간단하게 3줄의 포인터가 사용된 소스에 대해서 그림과 함께 쉽게 정리를 해놓을 것이다. 

[포인터 기초]


위 소스를 글로 간단하게 설명하면 i라는 변수에 3을 할당하고 ptr이라는 포인터 변수에는 처음에 NULL을 할당한 뒤, ptr에 i변수의 주소값을 저장하게 된다. 이를 간단하게 그림으로 나타내면 다음과 같아 진다. 여기서 주소 값은 OS의 메모리 상황에 따라 임의로 정해지며 그림에서의 주소값 또한 임의로 아무 값을 할당 했다.


여기서 ptr 포인터 변수이기 때문에 자신의 주소값을 가진다. 그렇다면 ptr포인터 변수가 저장하고 있는 주소값의 값에 접근 하기 위해서는 어떻게 할까?? 그것은 [4]를 보면 알 수 있다. * 를 사용하여 해당 포인터 변수가 저장하고 있는 주소값의 값에 접근 할 수 있다. 그림으로 나타내면 다음과 같다.

그렇다면 만약 포인터 변수에 잘못된 주소 값을 지정하게 어떻게 될 것인가? 그것은 안봐도 뻔하다 잘못된 값을 참조하게 될 것이다. 그래서 해당 설명에서는 i의 주소값을 할당 하는 것이 아니라 i의 값을 포인터 변수에 할당 하고 접근을 해본다. 
그러면 동작은 하겠지만 MacOS XCode에서는 다음과 같은 모습을 볼 수 있다. 

영어 그대로 나쁜 접근이라고 나타 내는 것을 볼 수있다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함