컴퓨터 공학! 정보통신공학! 전산학부 기타 등등 C언어를 처음 접하는 학생들(새내기들)의 의지를 단번에 좌절시켜주는 너란 녀석!
포!인!터!
(아….나도 안좋은 기억이 떠오른다………또르르르)
대부분의 책에서 포인터에 대해서 메모리의 주소값을 저장하는 변수라고 알려주고 있으며
대부분의 학생들은 그래서 어쩌라고…??? 라는 반응을 보인다.
이런 반응을 보이는 가장 큰 이유는 컴퓨터의 내부동작방식을 배우지 않은 상태에서 포인터라는 놈을 설명하다보니 발생하는 문제점이다.
마치 수학에서 사각형의 면적도 못 구하는 어린아이에게 적분을 설명하고 있는거랑 비슷한거다.
특출난 몇몇(천재적인 인간들이 꼭 있긴하다)은 완전히 이해한다기보다는 개념적인 추론에 의해 이해해 버버리기도하지만…대부분은 이해하기가 어려운게 정상이다.
나도 어릴때(?) C언어 책을 몇번이나 보다가 포인터에서 좌절하고 책을 덮었던 기억이 새록새록 떠오른다.ㅠㅠ
자세한 컴퓨터 메모리 구조를 그려가면서 설명하면 다들 뒤로가기를 누를거 같으니, 다른 방식으로 설명해보자.
자…앞으로 포인터는 윈도우에 있는 바로가기 파일이라고 생각하자.
내 컴퓨터에 깊고 깊은 폴더속에 100메가짜리 파일이 있는데, 이걸 바탕화면에서 불러오고 싶다..
어떻게 하면 될까?
- 바탕화면으로 파일을 복사한다.
- 바탕화면에 해당 파일의 바로가기 파일을 생성한다.
간단하게 두가지 방식에 대해서 고민을 해보자. 장단점이 뭐가 있을까?
1번 방식
- 장점 : 쉽다
- 단점 : 원본 파일을 수정하면 바탕화면에 파일을 다시 복사해야된다. 귀찮고 까먹을 수도 있다. 용량이 두배로 든다.
2번 방식
- 장점 : 디스크 용량을 아낄수 있다. 원본이 하나라서 하나만 수정하면 모두가 적용된 파일을 열수있다.
- 단점 : 바로가기 파일 생성하는게 귀찮다. 바로가기 파일 만들고 관리하는 법을 배워야 한다.
자~ 위에서 설명한 두가지 방식에 대해선 이해가 잘 되죠?
자….이제 바로가기 파일을 포인터로 바꿔보자.
똑같다.. 그냥 그런 용도로 사용하려고 만들어진거다..라고 일단 이해하자.
오늘은 여기까지!
다음에는 포인터는 모두가 다 4바이트(32비트 환경) / 8바이트(64비트 환경) 이라는데, 도대체 포인터의 타입은 왜!! 있는건가에 대해서 간단하게 정리해보고자 한다.