• 티켓 내역
  • 회원가입
  • 로그인
대학교육 멘토지원
로그인
홈 클래스 LIVE 멘토 콘텐츠
#IT개발 #직무

개발자에게 ‘포인터’가 중요한 이유가 뭔가요?

이세린 멘토
네이버 · 검색시스템
멘토님, 안녕하세요. 전산 기초 공부를 하던 중 *포인터에 대해 궁금한 게 생겨서 질문드립니다.
 
제가 알고 있는 포인터의 개념은 마치 보물 지도처럼 보물을 숨겨둔 위치를 알려주는 것인데요. 원하는 데이터가 저장되어 있는 주소 값을 알려준다고 이해하고 있습니다. 즉 '포인터를 활용하여 메모리 공간을 연속적으로 할당하지 않아도 주소 값을 이용해서 데이터들을 연결시킬 수 있다' 정도입니다.
 
Ⓒalex knight

포인터가 굉장히 중요한 개념인 것 같고, 자바 같은 경우도 포인터를 기본 베이스로 하고 있다고 들었는데요. 포인터가 왜 중요한지 그리고 더 깊게 알기 위해서는 어떻게 해야 하는지 등이 궁금합니다.
 
질문 들어 주셔서 감사드리며, 답변 기다리겠습니다.
 


*포인터 : 포인터(pointer)는 프로그래밍 언어에서 다른 변수, 혹은 그 변수의 메모리 공간 주소를 가리키는 변수를 말한다. 포인터가 가리키는 값을 가져오는 것을 역참조라고 한다. 포인터는 어셈블리, C, C++, 파스칼 등 하위 레벨까지 제어할 수 있는 언어에서 주로 많이 쓰이며, 모듈라-2, 에이다와 같은 언어에서는 극히 제한적으로 사용되고, 자바, 에펠 등에서는 완전히 숨겨져 사용할 수 없다.

이세린 멘토의 답변


멘티님, 안녕하세요. 반갑습니다. ‘프로그래밍의 기초’ 쪽 공부를 하고 계시군요. 포인터의 개념이 잘 이해되지 않기도 하고, 또 어렵기도 하죠? 말씀하신 것처럼 포인터는 모든 분들이 C 기반 프로그래밍을 배울 때 처음으로 마주치는 장벽인 것 같아요.
 
포인터가 무엇인지에 대해서는 인터넷에도 저보다 가르치는 능력이 뛰어나신 분들이 많으니 이는 생략하도록 하고요. 질문하신 것에 집중해서 1)왜 중요한지와 2)깊이 공부하기 위한 방법에 대해서 말씀드리겠습니다.
 
본격적으로 설명해 드리기 전에, 제 답변은 완전한 진리라기보다는 제가 바라보는 관점에서 중요한 것이라고만 봐주시면 좋을 것 같습니다. 제 답변이 멘티님이 이해하는 데 도움이 될 수 있기를 바랍니다.

Ⓒfabian grohs

포인터를 사용해 ‘소프트웨어 비용’을 줄일 수 있어요
그럼 첫 번째로 ‘포인터가 왜 중요한가’에 대해 말씀드릴게요. 결론부터 말씀드리면, 데이터를 조작하기 위해 개발자가 명시적 또는 프로그래밍 내부적으로 사용하는 개념이기 때문입니다. 이를 좀 더 설명하기 위해 우리가 프로그래밍을 통해 무엇을 하는지를 살펴볼게요.
 
우리는 프로그래밍을 통해서 입력 데이터를 원하는 출력 데이터로 변화시키려고 합니다. 결국 프로그래밍은 데이터를 조작하는 일과 직결되어 있어요. 프로그래밍 상에서 데이터를 조작하기 위해 데이터를 변수(Variable)에 저장하고, 프로그래밍 상에서 변수명을 작성합니다.
 
여기서 변수명은 메모리에 일부 공간을 가리키기 위해 지정한 이름이고, 포인터는 바로 변수 이름이 가리키는 그 메모리 주소를 저장하는 변수인 것입니다. 즉, 포인터 변수가 메모리 주소 데이터를 조작할 필요가 있을 때 사용해야 하는 변수이며 그렇기 때문에 이 개념을 알아야 하는 거죠.
 
여기까지는 아마 아는 내용일 수도 있는데요. 도대체 왜 메모리 저장소를 꼭 저장해야 하는지, 그게 언제 쓰이는지 물어보실 수도 있습니다. 그럴 땐 다른 값들을 저장하는 변수와 메모리 주소를 저장하는 포인터 변수와의 차이가 무엇일지 비교 분석을 해봐야 합니다.
 
가장 대표적으로 알려진 것은 이렇습니다. 포인터 변수는 메모리 주소를 가리키기 때문에 항상 저장해야 하는 값의 크기가 같고 그 주소에 바로 접근할 수 있는 특징이 있다는 거예요. 즉, '크기가 고정되어 있으며 접근 속도가 빠르다'라는 특징이 있는 거죠.
 
학생 때는 접할 수 있는 프로그래밍의 경험이 제한적이기도 하고, 소프트웨어의 비용 측면보다는 기능 측면의 중요성을 주로 배웁니다. 하지만 실무에서는 소프트웨어의 비용이 기능보다도 우선일 때가 많죠. 그만큼 중요한 개념입니다.
 
프로그램의 속도가 느리면 사용자가 떠나고, 프로그램의 연산이 무거우면 그만큼 서버를 늘려야 하니 비용이 발생합니다. 포인터를 사용하면 이런 부분을 크게 개선할 수 있으며 효율적인 연산이 가능해집니다.
그렇기 때문에 실제로 포인터의 개념을 알 때 더 빠른 솔루션을 제시할 수 있고요. 이것이 프로그래밍 언어를 통해 직/간접적으로 조작을 하는 이유라고 생각합니다.

Ⓒdrew coffman 
자료를 여러 번 읽고, 실제로 개발해 보시길
그다음으로 깊이 공부하기 위한 방법에 대해 말씀드릴게요. 사실 포인터라는 개념을 아주 깊이 공부할 것까지는 없다고 생각합니다. 하지만 분명히 본인이 이해가 잘 되지 않는 개념을 이해하는 과정은 중요하고 또 꼭 필요하다고 생각해요.
 
이건 포인터뿐 아니라 어떤 개념이라도 잘 이해되지 않을 때 쓰면 좋은 방법인데요. 첫째, 해당 개념이 나온 교재를 7번 읽는다. 둘째, 인터넷이나 책을 통해 관련 자료를 찾아서 읽는다. 셋째, 이해가 되지 않아도 계속 찾고 읽어 본다. 넷째, 직접 사용해 본다.
 
직접 사용하는 방법에 관해 조금 더 설명해 드리면요. 포인터의 경우, C 계열의 언어로 이진 트리와 같은 단순하면서도 중요한 개념을 직접 개발해 봅니다. 그리고 Java로도 직접 개발해 보세요. 어떤 차이가 있고 포인터가 어떻게 쓰이며 왜 중요한지를 체득하실 수 있을 거예요.
 
또 교수님, 선배, 친구, 지인에게 많이 질문하시고요. 위에 말씀드린 방법들이 보다 효과적이려면 충분히 이해되지 않았더라도 새롭게 얻은 지식을 자신에게 편한 방식으로 정리해 두면 좋습니다.
 
하지만 갑자기 어떤 개념을 처음 접하면 관련 정보를 어떻게 찾아야 할지 모를 수도 있죠. 그래서 도움이 되고자 제가 찾은 자료들을 공유 드리도록 하겠습니다. 아래 링크를 참고해 주세요.
 
- 백준 알고리즘 게시판 : https://www.acmicpc.net/blog/view/32
- C 언어 코딩 도장 : https://dojang.io/mod/page/view.php?id=275
- 프로그래머 유튜버 포프TV : https://www.youtube.com/user/KimPopeTV/featured
 
제 답변이 도움이 되었기를 바랍니다. 즐거운 준비 과정이 되도록 응원할게요. 감사합니다.

현직자 답변이 궁금하다면?
지금 무료로 확인하세요!
답변 보기
©모든 저작권은 해당 콘텐츠 제공자 또는 해당 콘텐츠 제공자와 잇다가 공동으로 보유하고 있으며, 콘텐츠의 편집 및 전송권은 잇다가 가지고 있습니다.
1
IT개발
이세린
명예 멘토
네이버 · 검색시스템
이미지 검색 팀에서 일하고 있습니다.
개발자
더보기
#직무 #스펙 #면접 #진로 #기타 #회사생활 #자소서
취업고민 즉문즉답 온라인 클래스 클래스 더보기
김현근 멘토
SK에너지
NEW
5일 후 마감
마케팅/MD · 직무 특강
영업과 마케팅의 경계에서 새로움을 만들어가다! 현직자 '마케팅' 직무 특강

2023.3.29(수) 19:00
온라인
2023 배재대학교
오진환 멘토
SKT
NEW
5일 후 마감
IT개발 · 직무 특강
AI, 로봇 서비스 개발자의 직무 특강

2023.3.29(수) 19:00
온라인
강원도일자리재단
오리지널
잇다 클래스팀 멘토
잇다(itdaa)
NEW
알림받기
서비스 · 기타
🐣앵콜!🐣삐약이 클래스 : 신입(인턴,주니어)을 위한 고민 상담소

2023.3.30(목) 19:00
온라인
잇다 오리지널
김용훈 멘토
펫프렌즈
4.88 (8)
19일 후 마감
마케팅/MD · 직무 특강
마케터들의 멘토와 함께 하는 마케팅 직무 특강

2023.4.12(수) 19:00
온라인
강원도일자리재단
이해봄 멘토
카카오브레인
4.2 (5)
19일 후 마감
IT개발 · 직무 특강
마케터로 시작해 IT업계 개발PM에서 인공지능까지! 문과생의 IT업계 취업하기

2023.4.12(수) 19:00
온라인
2023 배재대학교
클래스 더보기
함께 보면 좋은 콘텐츠 콘텐츠 더보기
IT개발
회사는 신입 프로그래머에게 어떤 수준을 기대하나요?
안녕하세요. 컴퓨터 학부 2학년에 재학 중인 학생입니다. 저는 미래에 IT 직종에서 프로그래머로 종사하고 싶습니다. 멘토님이 평소 올려두신 글을 보며 궁금했던 점들이 많이 해소됐습니다. 또한, 프로그래머 취준 과정과 회사 생활도 여쭙고 싶습니다. N 기업에 신입 프로그래머로 취업 시 필요한 스펙과 준비 사항이 궁금합니다.
이세린 멘토
네이버 · 검색시스템
52
약 4년 전
IT개발
데이터 마이너, 빅데이터 시대에 떠오르는 직업
데이터 마이너라는 직업으로 진로를 정했는데, 아직 아는 것도 없고 데이터 마이너 관련 지식이 부족합니다. 데이터 마이닝은 데이터 베이스와 어떻게 다른가요? 데이터 베이스는 데이터를 기반으로 원하는 정보를 찾는 것으로 알고 있는데, 데이터 마이닝은 정확히 어떤 것인지 궁금합니다. 데이터 마이너 관련해 조언 부탁드려요.
멘토
IT개발
16
약 4년 전
IT개발
머신러닝 입문, 어떻게 하면 좋을까요?
저는 현재 외국계 회사에서 기술영업 업무를 하고 있는 2년 차 회사원입니다. 머신러닝이나 클라우드 쪽으로 경력을 쌓고 싶지만, 어떻게 해야할 지 잘 모르겠습니다. 머신러닝 업무 관련 지식을 쌓기 위한 프로그램이나 자격증, 머신러닝 공부 경로 등을 알려주실 수 있을까요? 현직자의 조언을 받고 방향을 잡고 싶습니다.
이세린 멘토
네이버 · 검색시스템
19
약 4년 전
IT개발
비전공자의 IT 취업, 갖춰야 할 세 가지 역량
저는 IT 분야의 일을 하고 싶은데 전공도 법학이고 관련 지식, 자격증도 없습니다. 전공과 취업은 큰 상관이 없다는 말을 들었지만, 다른 분야는 몰라도 IT는 공학을 전공해야 경쟁력이 있는 거 아닌가요? 제가 IT 분야에서 인턴을 하거나, 취업하려면 어떤 직무 역량을 키워야 할까요? 멘토님의 조언 기다리겠습니다.
멘토
IT개발
33
약 4년 전
콘텐츠 더보기

Footer

가치 있는 커리어 경험을 연결합니다.
We connect with valuable work experience.
  • 온라인 클래스
  • 실시간 클래스 후기
  • 🚀 오리지널 클래스
  • 멘토 찾기
  • 멘토 지원하기
  • 자주하는 질문
  • 문의하기
  • 광고 매체 소개
  • B2B 대학교육 서비스

© 2023 잇다, Inc. All rights reserved.

회사소개 |
이용약관 |
개인정보 처리방침 |
네이버 블로그 |
브런치
대표번호: 02-2653-1022 (10:00 ~ 19:00) / 점심시간: 13:00~14:00 (주말 및 공휴일 휴무)
㈜레디앤스타트 | 사업자등록번호 : 117-81-82177 | 대표 : 조윤진 서울 종로구 종로1길 50 더케이트윈타워 B동 3층