새롭게 C언어를 공부하는 입장에서 처음 만나는 벽이 포인터라는 벽 일 것이다.

 

포인터란 변수가 시작되는 메모리주소 만을 갖는 녀석(변수)이다.

 

최근에 업무 중에 받은 느낌을 적어보자면

JAVA의 경우, function끼리 호출할 때 전달하는 argument를 받는 입장에서 parameter로 받아 새로운 메모리주소에 할당하고, 그 parameter를 제어하기 때문에 argument와 parameter는 각기 다른 메모리 주소에 할당되어 있지만 초기화 시에는 같은 데이터값을 갖는 중복의 개념으로 데이터를 관리한다.

이렇게 중복으로 메모리를 관리하더라도, JVM이라는 똑똑한 녀석이 사용하지 않는 메모리는 알아서 처리해 주기 때문에 개발자는 정말 편하게 데이터를 무한복사 하며 사용하여도 탈이 나지 않는다.

이 기능을 garbege collection이라고 한다. (JVM은 이를 수행해 주는 garbege collector.)

 

허나, C언어에는 이런 garbege collection기능이 없기 때문에 메모리를 결벽증처럼 사용해야 한다.

임베디드환경이라면 더욱더....

무튼 위에서 설명한 바와 동일하게 function을 호출하면서 전달하는 argument를 parameter로 받아서 메모리주소를 새로 할당해서 사용하는 방법이 가능하지만, argument전달 시 변수가 할당된 메모리주소를 전달하여, parameter로 받을 때, 포인터로 받아 동일한 메모리 주소를 사용해 버리면 메모리주소의 새로운 할당과 데이터 복사가 필요 없이

의미론적으로 전달하고자 하는 argument를 온전히 사용 가능하게 된다.

 

일상생활에 비춰본다면, garbege collector인 JVM은 알아서 청소해 주는 로봇청소기이고,

pointer는 직접 먼지가 있는 곳을 찾아가 청소하는 사람을 떠올리면 제가 받은 느낌을 공감할까요..

 

이래도 어렵다면

한마디로 데이터를 복사하지 않고, 직접 제어하면서 낭비를 줄이기 위한 행위이다.

라고 두루뭉실하게 개념을 잡고 포인터와 먼저 친해지는 것이 중요하겠다.

728x90
반응형

'C, C++' 카테고리의 다른 글

C++ vector(벡터)를 써보자  (0) 2023.06.30
C++ thread sleep  (0) 2023.06.12
windows 10에서 C언어 환경 구성하기  (0) 2022.10.02

+ Recent posts