인기여정
C 프로그래밍 배우기
무료 인터랙티브 온라인 C 강의입니다. 모든 레슨에서 직접 C 코드를 작성하며 변수, 제어 흐름, 함수, 포인터, 메모리 관리를 익히고, segfault가 날 땐 AI 힌트가 도와주며, 완주하면 무료 수료증까지 받습니다.
117,962+ 명의 codders가 등록함
- 초보자 환영
AI 코딩 도우미
실습 중심의 대화형 강의
모든 레슨에 음성 나레이션 제공
지식을 확인하는 퀴즈
무료 수료증
커리큘럼
섹션 1
Fundamentals
섹션 시작하기시작펼치기접기Build a strong foundation with essential concepts and basic skills소개
4 개 강의326- 01C 언어챌린지
- 02Hello World!챌린지퀴즈
- 03주석퀴즈
- 04프로그램의 기본 구조챌린지퀴즈
변수
11 개 강의1485- 01자료형챌린지퀴즈
- 02정수형챌린지퀴즈
- 03실수형 (Float - Double)챌린지마스터리퀴즈
- 04문자형챌린지퀴즈
- 05불리언챌린지마스터리퀴즈
- 06상수챌린지퀴즈
- 07printf 기초챌린지퀴즈
- 08변수 명명 규칙챌린지퀴즈
- 09형 변환 파트 1챌린지마스터리퀴즈
- 10형 변환 파트 2챌린지퀴즈
- 11복습 챌린지챌린지
연산자
9 개 강의1161- 01산술 연산자챌린지퀴즈
- 02나머지 연산자챌린지마스터리퀴즈
- 03증감 연산자챌린지퀴즈
- 04대입 연산자챌린지퀴즈
- 05관계 연산자챌린지퀴즈
- 06논리 연산자 파트 1챌린지퀴즈
- 07논리 연산자 파트 2챌린지퀴즈
- 08논리 연산자 파트 3챌린지마스터리퀴즈
- 09요약 챌린지챌린지
제어 흐름
7 개 강의944- 01If 문챌린지퀴즈
- 02If - Else 문챌린지퀴즈
- 03Else-If 문챌린지마스터리퀴즈
- 04Switch Case 문챌린지마스터리퀴즈
- 05삼항 조건 연산자챌린지퀴즈
- 06복습 챌린지챌린지
- 07중첩 If - Else 문챌린지퀴즈
입출력
5 개 강의626- 01형식 지정자챌린지퀴즈
- 02scanf 기초챌린지마스터리퀴즈
- 03복습 챌린지 #1챌린지
- 04입력 유효성 검사챌린지퀴즈
- 05복습 챌린지 #2챌린지
반복문
9 개 강의1053- 01For 반복문챌린지마스터리퀴즈
- 02While 반복문챌린지퀴즈
- 03Do While 반복문챌린지퀴즈
- 04Break챌린지퀴즈
- 05Continue챌린지퀴즈
- 06복습 챌린지 #1챌린지
- 07중첩 반복문챌린지마스터리퀴즈
- 08무한 루프퀴즈
- 09복습 챌린지 #2챌린지
함수
7 개 강의1039- 01함수 선언하기챌린지퀴즈
- 02반환 타입챌린지마스터리퀴즈
- 03매개변수챌린지마스터리퀴즈
- 04복습 챌린지 #1챌린지
- 05재귀 기초챌린지마스터리퀴즈
- 06함수 프로토타입챌린지퀴즈
- 07복습 챌린지 #2챌린지
배열
8 개 강의1247- 01배열 선언하기챌린지퀴즈
- 02요소에 접근하기챌린지퀴즈
- 03요소 수정하기챌린지마스터리퀴즈
- 04다차원 배열챌린지마스터리퀴즈
- 05복습 챌린지 #1챌린지
- 06함수 인자로서의 배열챌린지마스터리퀴즈
- 07배열 알고리즘챌린지마스터리퀴즈
- 08복습 챌린지 #2챌린지
최종 도전 과제
3 개 강의3- 01성적챌린지
- 02산봉우리챌린지
- 03TV챌린지
섹션 2
Logic & Flow
섹션 시작하기시작펼치기접기Master advanced C programming with a focus on data structures and flow control. Learn to work with complex arrays, collections, error handling, and time management.포인터 기초
6 개 강의540- 01포인터란 무엇인가요?퀴즈
- 02포인터 선언하기챌린지퀴즈
- 03주소 연산자 (&)챌린지퀴즈
- 04역참조 연산자 (*)챌린지퀴즈
- 05NULL 포인터챌린지퀴즈
- 06요약: 포인터 기초챌린지
포인터와 배열
5 개 강의531- 01포인터로서의 배열 이름챌린지퀴즈
- 02배열 요소와 포인터챌린지퀴즈
- 03포인터 연산챌린지퀴즈
- 04포인터 비교챌린지퀴즈
- 05요약: 포인터를 이용한 배열 순회챌린지
문자 배열과 문자열
8 개 강의858- 01char 배열로서의 문자열챌린지퀴즈
- 02널 종료 문자챌린지퀴즈
- 03scanf를 이용한 문자열 입력챌린지퀴즈
- 04strlen() 사용하기챌린지퀴즈
- 05strcpy() 사용하기챌린지퀴즈
- 06strcat() 사용하기챌린지퀴즈
- 07strcmp() 사용하기챌린지퀴즈
- 08요약: 기본 문자열 함수챌린지
프로젝트: 간단한 텍스트 유틸리티
프로젝트5 개 강의1- 01프로젝트 개요챌린지
- 02글자 수 세기프로젝트
- 03모음 개수 세기프로젝트
- 04대문자로 변환하기프로젝트
- 05최종 출력프로젝트
포인터와 함수
6 개 강의641- 01값에 의한 전달챌린지퀴즈
- 02함수에 포인터 전달하기챌린지퀴즈
- 03포인터를 통한 변수 수정챌린지퀴즈
- 04고전적인 예제: Swap챌린지퀴즈
- 05함수에 배열 전달하기챌린지퀴즈
- 06요약: 함수 포인터 인자챌린지
메모리 관리
7 개 강의652- 01스택 vs 힙 메모리퀴즈
- 02동적 할당 - malloc()챌린지퀴즈
- 03할당을 위한 sizeof() 사용챌린지퀴즈
- 04할당 실패 확인챌린지퀴즈
- 05free()를 이용한 메모리 해제챌린지퀴즈
- 06calloc()을 이용한 할당챌린지퀴즈
- 07요약: 동적 배열챌린지
구조체 (structs)
6 개 강의540- 01구조체란 무엇인가요?퀴즈
- 02구조체 선언하기챌린지퀴즈
- 03구조체 변수 생성하기챌린지퀴즈
- 04구조체 멤버에 접근하기챌린지퀴즈
- 05구조체 초기화하기챌린지퀴즈
- 06요약: 학생 데이터 구조체챌린지
구조체와 포인터
6 개 강의643- 01구조체 포인터챌린지퀴즈
- 02화살표 연산자 (->)챌린지퀴즈
- 03값에 의한 구조체 전달챌린지퀴즈
- 04구조체 포인터 전달챌린지퀴즈
- 05구조체의 동적 할당챌린지퀴즈
- 06복습: 구조체 수정 - 포인터챌린지
프로젝트: 간단한 연락처 입력
프로젝트5 개 강의1- 01프로젝트: 연락처 구조체 정의하기챌린지
- 02연락처 생성 함수프로젝트
- 03연락처 데이터 채우기 함수프로젝트
- 04연락처 출력 함수프로젝트
- 05하나로 합치기프로젝트
열거형(Enum)과 Typedef
6 개 강의640- 01명명된 상수를 위한 enum챌린지퀴즈
- 02열거형(Enum) 선언과 사용챌린지퀴즈
- 03Switch 문에서의 열거형(Enum) 활용챌린지퀴즈
- 04타입 별칭을 위한 typedef 사용챌린지퀴즈
- 05구조체와 typedef챌린지퀴즈
- 06요약: Typedef와 열거형(Enum) 실습챌린지
최종 복습 챌린지
3 개 강의3- 01복습: 동적 문자열 연결챌린지
- 02복습: 구조체 배열챌린지
- 03복습: 단어 빈도수 카운터챌린지
섹션 3
Object Oriented Programming
섹션 시작하기시작펼치기접기Discover how to organize code with classes, objects, and reusable structures모듈형 프로그래밍 기초
5 개 강의433- 01헤더 파일퀴즈
- 02인클루드 가드챌린지퀴즈
- 03소스 파일챌린지퀴즈
- 04정적 함수챌린지퀴즈
- 05요약: 모듈형 계산기챌린지
객체와 메서드
6 개 강의642- 01객체로서의 Struct챌린지퀴즈
- 02'Self' 포인터챌린지퀴즈
- 03Const 정확성챌린지퀴즈
- 04포인터 vs 값챌린지퀴즈
- 05헬퍼 메서드챌린지퀴즈
- 06요약: Point Manager챌린지
객체 생명 주기
5 개 강의533- 01생성자 패턴챌린지퀴즈
- 02소멸자 패턴챌린지퀴즈
- 03스택 초기화챌린지퀴즈
- 04깊은 복사챌린지퀴즈
- 05요약: String Wrapper챌린지
캡슐화
5 개 강의435- 01불투명 포인터 개념퀴즈
- 02불투명 구조체 정의하기챌린지퀴즈
- 03게터와 세터챌린지퀴즈
- 04세터에서의 유효성 검사챌린지퀴즈
- 05요약: 비밀 상자챌린지
프로젝트: 간단한 은행 계좌
프로젝트6 개 강의1- 01프로젝트 설정챌린지
- 02계좌 구현하기프로젝트
- 03입금 로직프로젝트
- 04출금 로직프로젝트
- 05잔액 조회하기프로젝트
- 06프로젝트 마무리: 메인 루프프로젝트
합성을 통한 상속
5 개 강의531- 01구조체 임베딩챌린지퀴즈
- 02첫 번째 멤버 규칙챌린지퀴즈
- 03부모 멤버 접근하기챌린지퀴즈
- 04업캐스팅챌린지퀴즈
- 05요약: 도형 계층 구조챌린지
함수 포인터
5 개 강의534- 01함수 포인터 선언챌린지퀴즈
- 02함수 포인터 호출챌린지퀴즈
- 03함수 포인터를 위한 Typedef챌린지퀴즈
- 04함수를 인자로 전달하기챌린지퀴즈
- 05요약: 계산기 디스패치챌린지
다형성
6 개 강의641- 01구조체 내의 함수 포인터챌린지퀴즈
- 02메서드 시뮬레이션챌린지퀴즈
- 03인터페이스의 개념챌린지퀴즈
- 04인터페이스 구현하기챌린지퀴즈
- 05다형적 순회챌린지퀴즈
- 06요약: Greeter챌린지
프로젝트: 도형 그리기
프로젝트5 개 강의1- 01프로젝트 개요챌린지
- 02원 구현프로젝트
- 03사각형 구현프로젝트
- 04다형성 활용프로젝트
- 05도형 컨테이너프로젝트
제네릭 컨테이너
5 개 강의534- 01Void 포인터 복습챌린지퀴즈
- 02제네릭 래퍼챌린지퀴즈
- 03제네릭 스왑챌린지퀴즈
- 04제네릭 비교챌린지퀴즈
- 05복습: 제네릭 배열챌린지
C 디자인 패턴
4 개 강의425- 01싱글톤 패턴챌린지퀴즈
- 02팩토리 패턴챌린지퀴즈
- 03이터레이터 패턴챌린지퀴즈
- 04요약: Logger Factory챌린지
최종 도전 과제
4 개 강의48- 01RPG 캐릭터챌린지
- 02동적 문자열 빌더챌린지
- 03제네릭 스택챌린지
- 04이벤트 시스템챌린지퀴즈
Coddy에서 C 프로그래밍을 배우는 이유
- 브라우저에서 진짜 C 코드를 작성하고 실행하세요. GCC 설치, Makefile, 툴체인 설정 모두 필요 없습니다. 연습 문제마다 서버에서 C 프로그램을 컴파일해 결과를 바로 보여줍니다.
- 실무에서 쓰이는 그대로의 C: 포인터와 참조, 배열, 문자열, 구조체,
malloc과free로 다루는 동적 메모리, 파일 I/O. 시스템 프로그래머에게 필요한 C의 기초를 모두 담았습니다. - AI 힌트가 C 컴파일러 오류와 segfault를 읽고 고치도록 도와주니, 첫날부터 언어가 난해하게 느껴지지 않고 친근하게 다가옵니다.
- 과정을 끝내면 무료 C 프로그래밍 수료증을 받습니다. C 숙련도가 요구되는 시스템, 임베디드, OS, 게임 엔진 분야에서 통하는 증명이죠.
C 프로그래밍 학습에 대한 자주 묻는 질문
C 프로그래밍은 배우기 쉬운가요?
C는 최신 언어들에 비해 기능 자체는 적지만, 초반부터 pointer와 수동 메모리 관리를 직접 마주해야 하기 때문에 어렵다는 평을 듣습니다. 이 코스에서는 이런 개념들을 한 단계씩 차근차근 소개하고, 각 개념마다 직접 코드를 짜보는 연습 문제가 따라오기 때문에 어려운 부분이 한꺼번에 몰리지 않습니다.
C와 C++ 중 어느 것을 먼저 배워야 할까요?
임베디드, OS 레벨, 저수준 시스템 작업이라면 C로 시작하세요. 더 작고 하드웨어에 가깝습니다. 애플리케이션 개발, 게임 엔진, 또는 현대적인 시스템 작업이라면 C++가 더 일반적인 선택이고, 메모리를 직접 다루기 전에 클래스를 거치며 좀 더 완만하게 적응할 수 있습니다.
C 프로그래밍을 배우는 데 얼마나 걸리나요?
C 기초 — 변수, 조건문, 반복문, 함수 — 는 매일 연습하면 2~4주 정도 걸립니다. 포인터, 구조체, 동적 메모리에 익숙해지는 데는 보통 1~3개월이 더 필요하고요. 마스터 단계(시스템 레벨 코드, 성능 최적화, 대규모 C 코드베이스)까지 가려면 몇 년 단위로 봐야 합니다.
C 프로그래밍을 온라인에서 무료로 배울 수 있나요?
네. 인터랙티브 C 강의는 무료입니다 — 전체 강의, 코딩 연습 문제, 퀴즈, 그리고 수료증까지 포함되어 있어요. C 컴파일러는 서버에서 실행되기 때문에 C 코드를 작성하려고 GCC, Clang, IDE를 따로 설치할 필요가 없습니다.
이 강의를 들으려면 C 컴파일러를 설치해야 하나요?
아니요. 모든 C 실습은 샌드박스 환경에서 컴파일되어 코드 옆에 결과가 바로 표시됩니다. Makefile도, IDE도, 별도의 toolchain 설정도 필요 없습니다.
C 프로그래밍 강좌를 마치면 수료증을 받을 수 있나요?
네. C 프로그래밍 코스를 끝내면 무료 수료증을 받게 되고, 이력서에 추가하거나 LinkedIn에 공유할 수 있어요 — 직접 만든 systems-programming 프로젝트나 GitHub 저장소와 함께 두면 효과가 좋습니다.