처음에 포인터를 배울 때 포인터의 개념은 그렇게 어렵지 않았다. 하지만 실제로 사용하다보면 어디선가부터 꼬이기 시작하는데, 특히 이중포인터, 삼중포인터를 사용할 때 코드를 작성하면서도 이게 맞는지 헷갈렸다. 솔직히 헷갈릴 이유가 없는데 왜 그렇게 헷갈렸던 것일까? 그 이유는 별표(*) 의 사용법이 혼동되기 때문이다. 우리는 포인터를 배울 때 * 연산자는 역참조, 즉 실제 값을 가져오며, & 연산자는 주소값을 가져온다고 배운다. 다음 포인터 선언과 사용을 보여주는 코드를 보자. /*포인터 선언*/ int num = 10; int *ptr = # /*포인터의 사용*/ printf("%d \n", *ptr); 포인터의 선언을 할 때도 *연산자를 사용한다. 그리고 포인터를 사용할 때도 *연산자를 사용한다..
포인터는 주소값을 담는 변수이다. C언어 강의중에서 가장 먼저 포기하는 사람이 나오는 지점이 바로 '포인터'를 배울 때다. 왜 포기하냐고 물으면 포인터라는 개념이 잘 와닿지가 않는다고 한다. 또는 개념은 어떤 느낌인지 잘 알겠는데, 실제로 사용하려니 헷갈리는 사람이 많다고 한다. 개념이 와닿지 않아요. 개념이 잘 와닿지 않는 이유는 컴퓨터의 기본 원리를 이해하지 못하고 있기 때문인데, Deep하게 파고 들지 않더라도, 충분히 이해할 수 있는데도 불구하고 포기하는 사람이 많다. 포인터에서 자주나오는 용어인 메모리(Memory)와 주소(Address)라는 용어가 잘 이해가지 않는다면 아래 설명을 천천히 머릿속으로 떠올려보자. 나는 수학공부를 하고 싶다. 수학공부를 하기 위해 책장에 꽂혀있는 '수학의 정석' ..