일단 이것저것 해 보는 블로그

(정보처리기사 공부기록) C언어 포인터 정리(흥달쌤 감사합니다!) 본문

2026/(일단 해보는) IT 공부기록(2026~)

(정보처리기사 공부기록) C언어 포인터 정리(흥달쌤 감사합니다!)

뷔구룽 2026. 1. 18. 00:21

개요

올해 초에 있을 정보처리기사 필기 응시를 위해 틈틈이 공부 중이다.

아주 피터지게까지는 아니지만 대학 졸업하고 이렇게 능동적으로 자료를 찾으며 공부하는 건 아마 처음이지 않을까 싶다.

 

필기는 총 5과목으로 구성되어 있는데, 그 중 CS 비전공자인 내게 가장 어려운 파트는 단연

'4과목: 프로그래밍 언어 활용'이겠다.

프로그래밍 기초는 이번 달부터 자바 스터디에 참여하며 조금씩 배우고 있지만,

정처기 시험에서 가장 비중있게 출제되는 건 C언어가 아닐까 싶다.

다행히도 기본 문법 자체는 자바와 유사해 익숙해지고 있다.

다만, 많은 C언어 입문자들이 좌절하거나 포기한다는

포인터

가 막막하기만 할 따름이었다.

 

다행히도 포인터에 대한 기본적인 개념 강의와 문제 풀이를 몇 번이고 반복하며

혼자 힘으로도 문제를 풀어보려고 애를 쓰다 보니

이제 기본적인 포인터 문제에는 자신감이 붙었다.

 

많은 분들이 추천해주신 대로 비전공자나 초보자를 위한 기초 C언어 강의에는

 

흥달쌤의 깨알 C언어만한 게 없었다! (광고성 대가 없는 순수한 추천이다)

프로그래밍의 기초 개념부터 기초 문법, 심화 활용까지

한 강의에서 짧은 시간 안에도 최대한 이해하기 쉽게 여러 번 설명해 주시는 부분이 인상적이다.

C언어를 공부하든 다른 언어를 공부하든 프로그래밍의 기본 원리와 언어별 기초 문법에는 비슷한 게 많은 듯하니

초보자는 한 번쯤 강의를 들어보길 추천한다. 특히 정보처리기사 시험 준비하는 비전공자들은 꼭!

(처음부터 끝까지 한번 돌려도 좋고, 공부하다 잘 이해가 안 가는 부분 위주로 찾아 들어도 좋겠다.

나는 기사 시험 준비와 자바 스터디를 병행 중이기에, 그때그때 필요한 부분 중심으로 발췌해서 듣는 중이다!)

 

포인터 부분도 처음 1~2번은 머릿속에 잘 들어오지 않았지만

한두 번 강의를 더 돌려보며, 흥달쌤 카페에서 함께 제공해주신 교안 문제를 스스로 풀어본 결과

이제는 포인터의 개념에는 어느 정도 자신이 생겼다.

 

아래는 흥달쌤 강의를 들으며 이해한 개념을 간단히 정리해두고자 한다(개인 학습용).

 

먼저, 흥달쌤 깨알 C언어 강의는 아래 링크에서

깨알 C언어(재생목록; 260118 최종접속)

 

C언어 특강

 

www.youtube.com

(네이버 카페에 '흥달쌤' 검색하면 선생님이 직접 운영하시는 카페도 있다. 강의 교안은 거기서 다운받을 수 있다!)

 

개념 정리(흥달쌤 깨알 C언어 23강. 포인터 참고해 정리)

포인터: 메모리의 위치(주솟값)를 표현하는 개념.

포인터 변수 선언과 출력(예)

0) 먼저 임의의 메모리 공간을 다음과 같이 그려둔다.

메모리 공간          
주솟값(번지) 0 1 2 3 4

 

1) int *a(정수형 포인터 변수를 선언)

-> 포인터 변수는, 메모리와는 별도의 공간에 만들어둔다.

포인터 변수 a
 

 

2) *a=10(a의 주솟값이 가리키는 값에 10을 대입)

이는 a에 10이 들어있는 공간의 주솟값을 대입하라는 말과도 일맥상통한다. 

메모리 공간   10      
주솟값(번지) 0 1 2 3 4

 

가령, 위와 같이 10을 대입했다면

해당 공간의 주솟값은 1(번지)

즉 a = 1

 

3) printf("%d", a) = 1

-> a의 값을 정수형으로 출력한다.

2)에 따라 출력 결과는 1

 

4) printf("%d", *a) = 10

-> *a는 a의 주솟값이 가리키는 값을 나타내므로, 출력 결과는 10

 

(다른 예)

0) 임의의 메모리 공간 그려두기

메모리 공간          
주솟값(번지) 0 1 2 3 4

 

1) int b = 10; // 이 의미는 프로그래밍 기초가 있는 분들은 아실 거라 믿는다.

-> 일단 b 값이 10이구나 하고만 이해해도 충분

 

2) int *a // 정수형 포인터 변수 a 선언

a
 

 

3) a = &b // a에 b의 주솟값을 대입

-> 가령, 아래와 같이 b를 대입했다면

메모리 공간   b      
주솟값(번지) 0 1 2 3 4

 

b의 주솟값은 1(번지), 따라서 a = 1

이때 포인터 변수 공간 a는 메모리의 1번지를 가리킨다(참조한다).

 

4) printf("%d /n", *a) // 주솟값 a가 가리키는 값

-> a는 b가 있는 공간의 주솟값이며

*a는 그 주솟값이 가리키는 값을 의미

따라서 출력 결과는 b = 10 // 1)에 따라서

 

5) printf("%d /n", b) // 변수 b 값 출력

출력 결과는 10

 

정리하고 보니 아직은 머릿속이 오락가락하다.

포인터, 아직 넘어야 할 응용 개념도 많지만 필기를 넘어 실기에까지 잘 활용할 수 있도록 틈틈이 익숙해지려고 한다.