C언어 공부하기: 시작하며 느낀 점과 개발 환경 설정
오늘부터 C언어를 본격적으로 공부하기 시작했습니다. 프로그래밍을 배우면서 느낀 점과 배운 내용을 정리해보려고 해요.
C언어 공부하기: 시작하며 느낀 점과 개발 환경 설정
왜 C언어를 공부하기로 했을까?
프로그래밍을 시작하면서 여러 언어를 고민했어요. Python도 쉽고 좋고, JavaScript도 웹 개발에 유용하지만, 결국 C언어를 선택한 이유가 있어요.
C언어를 공부해야 하는 이유:
-
프로그래밍의 기초를 이해할 수 있어요
- C언어는 많은 현대 언어들의 기반이에요. C++, Java, C# 등이 모두 C언어의 영향을 받았어요
- C언어를 이해하면 다른 언어를 배울 때 “왜 이렇게 동작하는지”를 이해할 수 있어요
- 마치 건물의 기초를 보는 것처럼, 프로그래밍의 근본을 볼 수 있어요
-
컴퓨터가 어떻게 작동하는지 알 수 있어요
- 메모리를 직접 관리하고, 컴퓨터의 하드웨어에 가까이 다가갈 수 있어요
- 고수준 언어들(Python, JavaScript)은 편리하지만, 내부적으로 어떻게 동작하는지 모호할 때가 많아요
- C언어를 배우면 “아, 이래서 이렇게 동작하는구나”를 이해할 수 있어요
-
성능이 중요한 프로그램을 만들 수 있어요
- 게임, 운영체제, 임베디드 시스템 같은 곳에서 C언어가 많이 사용돼요
- 빠른 실행 속도가 필요한 곳에서 C언어는 여전히 최선의 선택이에요
C언어를 공부하면서 느낀 점
좋은 점 👍
1. 빠른 실행 속도 처음으로 C언어 프로그램을 실행했을 때, Python보다 훨씬 빠르다는 걸 느꼈어요. 물론 간단한 프로그램에서는 차이가 크지 않지만, 복잡한 계산을 할 때는 확실히 느껴져요. 이건 C언어가 컴파일 언어라서 그런 거예요.
2. 메모리를 직접 제어할 수 있어요 이건 장점이자 단점이에요. 메모리를 직접 관리할 수 있어서 효율적인 프로그램을 만들 수 있지만, 실수하면 프로그램이 크래시될 수도 있어요. 하지만 이 과정에서 컴퓨터가 어떻게 메모리를 사용하는지 배울 수 있어서 좋아요.
3. 어디서나 사용 가능 Windows, Mac, Linux, 심지어 스마트폰까지 거의 모든 플랫폼에서 사용할 수 있어요. 한 번 배우면 다양한 곳에 적용할 수 있다는 게 매력적이에요.
어려운 점 👎
1. 메모리 관리가 어려워요 Python을 먼저 배웠다면, 메모리 관리를 자동으로 해주는 게 얼마나 편한지 알 거예요. C언어는 직접 관리해야 해서 실수하기 쉬워요. 하지만 이게 컴퓨터를 이해하는 데 도움이 되는 것 같아요.
2. 포인터 개념이 헷갈려요 아직 완전히 이해하지 못했지만, 포인터는 C언어의 핵심이면서도 가장 어려운 개념 중 하나예요. 차근차근 공부해봐야겠어요.
3. 디버깅이 까다로워요 에러가 발생했을 때, Python처럼 친절한 에러 메시지가 나오지 않아요. 때로는 프로그램이 그냥 크래시되기도 해요. 하지만 이 과정에서 더 신중하게 코드를 작성하게 되는 것 같아요.
개발 환경 설정하기
C언어를 공부하려면 먼저 개발 환경을 설정해야 해요. 처음에는 이 과정이 복잡해 보였지만, 차근차근 따라하니 생각보다 쉬웠어요.
Windows에서 개발 환경 설정
1단계: MinGW-w64 설치
왜 필요한가요? C언어 코드는 컴파일이라는 과정을 거쳐야 실행할 수 있어요. MinGW-w64는 Windows에서 C언어를 컴파일할 수 있게 해주는 도구예요. 컴파일러가 없으면 코드를 작성해도 실행할 수 없어요.
설치 과정:
- https://www.mingw-w64.org/ 접속
- Downloads 메뉴에서 Windows용 설치 파일 다운로드
- 설치 프로그램 실행 후 “Next”를 계속 클릭
- 설치 완료 후 컴퓨터 재시작
설치 확인: 명령 프롬프트(CMD)를 열고:
gcc --version
버전 정보가 나오면 성공이에요! 🎉
2단계: Visual Studio Code 설치
왜 VS Code를 선택했나요? 여러 에디터를 써봤는데, VS Code가 가장 편했어요. 무료이고, 확장 프로그램이 많고, 사용하기도 쉬워요. 특히 C언어 개발에 필요한 기능들이 잘 갖춰져 있어요.
설치 과정:
- https://code.visualstudio.com/ 접속
- “Download for Windows” 클릭
- 다운로드한 파일 실행하여 설치
- VS Code 실행
C/C++ 확장 프로그램 설치:
- VS Code 실행
- 왼쪽 사이드바에서 확장 프로그램 아이콘 클릭 (또는
Ctrl + Shift + X) - 검색창에 “C/C++” 입력
- Microsoft의 “C/C++” 확장 프로그램 설치
이 확장 프로그램을 설치하면 코드 자동완성, 문법 하이라이팅, 디버깅 기능을 사용할 수 있어요. 정말 편해요!
3단계: 첫 번째 프로그램 작성하기
드디어 첫 번째 C언어 프로그램을 작성해봤어요!
파일 만들기:
- VS Code에서 새 파일 만들기 (
Ctrl + N) hello.c로 저장 (Ctrl + S)- 다음 코드를 입력:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
printf("안녕하세요! C언어를 공부하고 있어요!\n");
return 0;
}
이 코드를 왜 이렇게 작성했나요?
먼저 #include <stdio.h>를 보면, 이건 표준 입출력 라이브러리를 불러오는 거예요. printf 함수를 사용하려면 이게 필요해요. Python에서는 그냥 print()를 쓰면 되는데, C언어는 필요한 기능을 미리 불러와야 해요. 이게 C언어의 특징이에요 - 필요한 것만 가져와서 사용하는 거죠.
int main() { }는 모든 C언어 프로그램의 시작점이에요. 프로그램이 실행되면 여기서부터 시작해요. int는 정수를 의미하는데, 나중에 배울 거예요. 지금은 “프로그램의 시작점”이라고만 기억하시면 돼요.
printf("...")는 화면에 글자를 출력하는 함수예요. Python의 print()와 비슷하지만, C언어에서는 함수 이름이 printf예요. \n은 줄바꿈을 의미해요. 이걸 안 쓰면 다음 출력이 같은 줄에 붙어서 나와요.
return 0;는 프로그램이 정상적으로 끝났다는 의미예요. 0은 “에러가 없다”는 뜻이에요. 다른 숫자를 반환하면 에러가 발생했다는 의미예요.
4단계: 프로그램 실행하기
컴파일이 왜 필요한가요? C언어는 컴파일 언어예요. 우리가 작성한 코드는 사람이 읽기 쉬운 형태지만, 컴퓨터는 이걸 직접 이해하지 못해요. 그래서 컴파일러가 우리 코드를 컴퓨터가 이해할 수 있는 기계어로 번역해주는 거예요.
실행 과정:
- VS Code에서 `Ctrl + “ (백틱)을 눌러 터미널 열기
- 컴파일하기:
gcc hello.c -o hello
이 명령어는 hello.c 파일을 컴파일해서 hello.exe라는 실행 파일을 만드는 거예요.
- 실행하기:
hello
출력 결과:
Hello, World!
안녕하세요! C언어를 공부하고 있어요!
와! 첫 번째 프로그램이 실행되었어요! 🎉
처음에는 컴파일 과정이 번거로워 보였지만, 이제는 “코드를 작성 → 컴파일 → 실행”이라는 흐름이 자연스러워졌어요.
프로그램 구조를 이해하며
모든 C언어 프로그램은 비슷한 구조를 가지고 있어요:
#include <stdio.h> // 1. 필요한 라이브러리 불러오기
int main() { // 2. 프로그램 시작점
// 여기에 코드를 작성합니다
printf("안녕하세요!\n");
return 0; // 3. 프로그램 종료
}
왜 이런 구조일까요?
-
#include <stdio.h>: 필요한 기능을 미리 불러와야 해요. Python처럼 자동으로 불러와주지 않아요. 이게 C언어의 철학이에요 - 필요한 것만 가져와서 사용하는 거죠. 이렇게 하면 프로그램이 가볍고 빠르게 실행될 수 있어요. -
int main() { }: 모든 프로그램은 시작점이 필요해요.main함수가 그 시작점이에요. 프로그램이 실행되면 여기서부터 차례로 실행돼요. 이건 C언어뿐만 아니라 많은 언어에서 공통적으로 사용하는 개념이에요. -
return 0;: 프로그램이 어떻게 끝났는지 알려주는 거예요. 0은 정상 종료, 다른 숫자는 에러를 의미해요. 이렇게 하면 프로그램을 실행한 다른 프로그램이나 사용자가 프로그램이 제대로 실행되었는지 알 수 있어요.
실전 예제: 자기소개 프로그램
배운 내용으로 간단한 자기소개 프로그램을 만들어봤어요:
#include <stdio.h>
int main() {
printf("=== 자기소개 ===\n");
printf("이름: 홍길동\n");
printf("나이: 25세\n");
printf("취미: 프로그래밍\n");
printf("좋아하는 언어: C언어\n");
printf("================\n");
return 0;
}
출력 결과:
=== 자기소개 ===
이름: 홍길동
나이: 25세
취미: 프로그래밍
좋아하는 언어: C언어
================
간단하지만, 이렇게 하나씩 만들어보면서 C언어에 익숙해지는 것 같아요.
컴파일이란 무엇일까?
처음에 “컴파일”이라는 말을 들었을 때 헷갈렸어요. 하지만 이해하고 나니 간단했어요.
컴파일 = 번역
- 우리가 작성한 C언어 코드는 사람이 읽기 쉬운 형태예요
- 하지만 컴퓨터는 이걸 직접 이해하지 못해요
- 그래서 컴파일러가 우리 코드를 컴퓨터가 이해할 수 있는 기계어로 번역해주는 거예요!
비유하면:
- 우리가 한국어로 글을 쓰면 (C언어 코드)
- 번역기가 영어로 번역해주는 것 (컴파일)
- 영어를 읽을 수 있는 사람이 읽는 것 (컴퓨터가 실행)
왜 컴파일이 중요한가요? 컴파일된 프로그램은 기계어로 변환되어 있어서 실행 속도가 매우 빨라요. Python 같은 인터프리터 언어는 실행할 때마다 번역하는 과정이 필요하지만, C언어는 미리 번역해두기 때문에 훨씬 빠르게 실행돼요.
자주 하는 실수와 해결 방법
공부하면서 여러 실수를 했어요. 같은 실수를 하지 않도록 정리해봤어요.
실수 1: 세미콜론(;) 빼먹기
printf("Hello") // ❌ 에러!
printf("Hello"); // ✅ 올바름
C언어에서는 문장 끝에 세미콜론을 반드시 붙여야 해요. 처음에는 자꾸 깜빡했어요. Python을 먼저 배웠다면 더 그럴 거예요.
왜 세미콜론이 필요한가요? C언어는 문장의 끝을 세미콜론으로 구분해요. 이렇게 하면 한 줄에 여러 문장을 쓸 수 있어요. 하지만 실수하기도 쉬워요.
실수 2: 따옴표 사용 잘못하기
printf('Hello'); // ❌ 작은따옴표는 문자 하나만 가능
printf("Hello"); // ✅ 큰따옴표 사용
C언어에서 작은따옴표는 문자 하나만, 큰따옴표는 문자열을 의미해요. Python과는 다르니까 주의해야 해요.
실수 3: 한글 인코딩 문제
한글이 깨져서 나올 수 있어요. VS Code에서 파일을 저장할 때 인코딩을 UTF-8로 설정해주세요. 이건 정말 중요한데, 처음에는 몰라서 한참 헤맸어요.
왜 이걸 배워야 하는가?
C언어를 공부하면서 느낀 점은, 이 언어가 프로그래밍의 기초를 이해하는 데 정말 중요하다는 거예요.
1. 다른 언어를 배울 때 도움이 돼요 C언어의 개념들을 이해하면, 다른 언어를 배울 때 “아, 이건 C언어의 이런 개념이구나”라고 이해할 수 있어요. 예를 들어, C언어의 포인터 개념을 이해하면 Java나 Python의 참조 개념도 쉽게 이해할 수 있어요.
2. 컴퓨터가 어떻게 작동하는지 알 수 있어요 고수준 언어들은 편리하지만, 내부적으로 어떻게 동작하는지 모호할 때가 많아요. C언어를 배우면 메모리가 어떻게 사용되는지, 프로그램이 어떻게 실행되는지 이해할 수 있어요.
3. 성능이 중요한 프로그램을 만들 수 있어요 게임, 운영체제, 임베디드 시스템 같은 곳에서 C언어가 많이 사용돼요. 이런 분야에서 일하고 싶다면 C언어는 필수예요.
다음에 공부할 내용
오늘은 C언어가 무엇인지, 그리고 개발 환경을 설정하는 방법을 배웠어요. 다음에는 변수와 데이터 타입에 대해 공부해볼 거예요.
변수는 프로그래밍에서 정말 중요한 개념이에요. 마치 상자에 물건을 넣고 꺼내는 것처럼, 데이터를 저장하고 사용하는 방법을 배워야 해요. 이걸 이해하지 못하면 프로그래밍을 할 수 없어요.
공부하면서 느낀 점이나 궁금한 점이 있으면 댓글로 남겨주세요. 함께 공부해요! 😊