-
목차
오늘도 힘들지만 컴퓨터 마스터와 함께 C언어의 깊은 바닷속으로 빠져볼 준비 되셨나요? 🌊
실제 프로그램을 만들 때 '근육' 역할을 하는 핵심 개념들을 다뤄보려고 합니다. 오늘 내용까지만 잘 소화하셔도 "나 C언어 좀 찍먹 해봤어!"라고 당당하게 말씀하실 수 있을 거예요.
[C언어 기초 2탄] 함수와 배열, 그리고 대망의 포인터 맛보기
어제 우리가 'Hello World'를 찍으며 컴퓨터와 인사를 나눴다면, 오늘은 컴퓨터에게 복잡한 일을 시키는 법을 배워볼 차례입니다.
1. 코드의 재사용, '함수(Function)'라는 마법
프로그래밍을 하다 보면 같은 동작을 여러 번 반복해야 할 때가 있습니다. 그때마다 똑같은 코드를 수백 줄씩 복사해서 붙여넣는다면? 생각만 해도 끔찍하죠. 이때 필요한 것이 바로 함수입니다.
함수는 쉽게 말해 **'특정한 기능을 미리 정해놓은 상자'**입니다.
- 입력(Parameter): 상자에 넣는 재료
- 출력(Return): 결과물
예를 들어, 두 수를 더하는 함수를 만들어두면, 앞으로 어디서든 그 함수 이름만 부르면 더하기 계산이 끝납니다.
int add(int a, int b) { return a + b; }마스터의 팁: C언어의 심장인 main()도 사실은 함수예요! 프로그램이 시작될 때 운영체제가 가장 먼저 호출하는 특별한 함수인 셈이죠.

C언어 기초 2탄 2. 비슷한 데이터를 한곳에, '배열(Array)'
우리 반 학생 30명의 성적을 저장해야 한다고 가정해 봅시다. 변수를 score1, score2... 이렇게 30개나 만드는 건 너무 비효율적이죠? 이럴 때 배열이라는 기차를 이용합니다.
- int score[30]; : 정수형 데이터 30개를 담을 수 있는 기차를 한 칸 예약한 것입니다.
- 주의할 점: C언어 기차의 번호표는 1번이 아니라 0번부터 시작합니다. (0, 1, 2, ... 29) 이걸 '인덱스(Index)'라고 불러요.
3. C언어의 최대 고비, '포인터(Pointer)' 쉽게 이해하기
자, 드디어 올 것이 왔습니다. 많은 입문자가 여기서 책을 덮는다는 그 전설의 포인터입니다. 하지만 저와 함께라면 어렵지 않아요!
포인터를 한마디로 정의하면 **'주소를 저장하는 변수'**입니다.
- 변수: 값을 담는 그릇 (예: 사과 5개)
- 포인터: 그 그릇이 어디 있는지 알려주는 주소지 (예: 서울시 강남구...)
왜 주소를 알아야 할까요?
실제 값(사과 5개)을 직접 들고 다니는 것보다, "사과는 저기 창고 A-1에 있어"라고 주소만 적힌 종이를 전달하는 게 훨씬 빠르고 가볍기 때문입니다. 메모리를 아주 효율적으로 써야 하는 C언어에서 포인터는 필수 중의 필수입니다!
- & (주소 연산자): 변수의 집 주소를 알아낼 때 씁니다.
- * (참조 연산자): 그 주소에 찾아가서 안에 뭐가 있는지 확인할 때 씁니다.
4. 문자열(String), 사실은 문자의 나열?
C언어에는 '문자열'이라는 별도의 기본 자료형이 없습니다. 대신 char형 배열을 사용하죠.
char name[] = "Master"; 라고 쓰면, 메모리에는 'M', 'a', 's', 't', 'e', 'r' 그리고 마지막에 **"여기서 끝이야!"**라고 알려주는 **\0 (널 문자)**가 자동으로 붙습니다. C언어가 얼마나 꼼꼼한지 아시겠죠?
🛠️ 실습! 간단한 계산기 로직 구상해보기
오늘 배운 함수와 조건문을 활용하면 아주 간단한 계산기 로직을 짤 수 있습니다.
- 사용자에게 숫자 두 개를 입력받는다. (scanf 사용)
- 더하기 기능을 수행하는 함수를 호출한다.
- 결과를 화면에 출력한다. (printf 사용)
이 과정을 직접 코드로 옮겨보세요. 에러가 난다면? 축하드립니다! 에러를 고치는 과정이야말로 실력이 가장 빨리 느는 순간이니까요. 모든지 처음이 힘들지 차근차근 하나씩 해 나가다 보면 어느덧 전문가처럼은 아니여도 "내가 이 정도 수준까지 올 줄 이야"하며 놀라는 순간이 오게 될 겁니다. 그 순간을 기대하며 포기 하지 않고 한 걸음씩 도전해 나간다면 분명 좋은 날이 올거에요~
그럼 오늘도 수고 많으셨습니다. 감사합니다.
'컴퓨터' 카테고리의 다른 글
프로그래밍 언어 C언어 (메모리 정렬과 패딩,시스템 콜,멀티스레딩,네트워크소켓프로그래밍) (0) 2026.04.21 프로그래밍 언어 C언어(전처리기, 분할 컴파일, 메모리 세부 구조, 비트 연산, 함수 포인터, 자료구조) (0) 2026.04.20 C언어 다음에는 어떤 언어를 배워야 할까? (0) 2026.04.19 프로그래밍 언어 C언어(변수와 포인터, 메모리관리등) (0) 2026.04.19 프로그래밍 언어 C언어에 대해서 배웁시다. (0) 2026.04.18
