일단 포인터에 대한 의견은 분분합니다. 어떤사람은 포인터는 의미없는 놈이다. 어떤사람은 포인터덕분에 프로그래밍이 날로 발전한다. 꼭 필요하다. 라는 분도 계십니다.

뭐 쨋던 확실한건 포인터로인해 C언어에서 하드웨어를 직접 관리할 수 있고, 메모리를 조금 더 세세히 관리, 활용 할 수있다는 점입니다. (당연히 그에 받쳐주는 코딩실력과 지식이 있을때..)

일단 포인터는 선언방법이 간단합니다.
int형을 넣고싶다면
int * point; 라고 선언하면 됩니다. 간단합니다.
변수선언과는 다르게 *(포인터연산자 [곱하기가아닙니다.] 혹은 에스크립터 연산자라고도 합니다.) 를 넣어주시면됩니다.
int* point;
int * point;
int *point; 이 셋은 모두 같은 선언입니다.

포인터는 어떠한 형을 넣던지 4byte임을 기억해두시기 바랍니다. (연산체계에 따라 다를 수 있습니다.)

왜나하면 메모리의 주소가 4byte이기때문입니다. (마찬가지로 연산체계에 따라 다릅니다.)

포인터는 크게보면 스택과 힙으로 나뉘어있습니다.
자세히보면 전역 공간, 자유 기억 공간(Heap 힙), 레지스터, 코드 영역, 스택 이죠.
(레지스터는 잡다한일을 합니다. 스택의 꼭대기와 명령 포인터를 계속 추적하는 등)

지역변수, 함수의 매개변수는 스택에 저장되고, 코드는 코드영역에, 전역변수는 전역공간에 저장되지요. 그리고 나머지는 자유 기억 공간(free store)로 분류됩니다. 이는 힙이라고 부르기도 합니다.

지역변수는 영원히 지속되지 않는다는 문제점이 있고, 함수가 반환되면 지역 변수들은 버려집니다. 또한 전역 변수들은 그 문제를 해결했지만 프로그램의 모든 부분에서 제한없이 접근할 수 있다는 대가를 치러야 합니다. (이는 이해하기 어렵고 유지보수를 어렵게 합니다.)

스택의 내용은 함수가 반환되면 자동적으로 지워집니다. 자유 기억 공간은 프로그램을 끝낼 때 까지 지워지지 않습니다. 메모리 사용을 끝냈을 때 그 공간을 유지하느냐 버리느냐를 결정해야하죠.

포인터는 정말 처음할때는 햇갈립니다...; 여러번보고, 읽고 쓰기밖에 답이 없습니다.
또한 포인터는 정말 조심히 다뤄야합니다. 자칫 잘못하다가는 운영체제가 뻑날수도있죠..
(물론 낮은 확률이지만..)
포인터는 조심히 다뤄야 하고 필수로 잘 다뤄야 한다고 할 만큼 중요합니다.
매우 좋은 것이라고 저는 생각합니다.

^^;;..


포인터가 싫으시다면 자바쪽을 공부하십쇼.
물론 포인터가 없지 않습니다.
내부 포인터(접근자)라고 존재합니다만, 외부 포인터가 없으므로 크게 신경쓰실것 없으실겁니다 ^^.

'개발' 카테고리의 다른 글

?: 삼항연산자... 뭐였더라?  (0) 2010.10.10
goto! 좋은놈? 나쁜놈? 이상한놈?  (0) 2010.10.10
typedef 는?  (0) 2010.10.10
중첩함수가 뭘까요~?  (0) 2010.10.10
클래스(Class) 란?  (0) 2010.10.10

+ Recent posts