모두의 코드
씹어먹는 C 언어 시작하기
안녕하세요 여러분. 씹어먹는 C 언어를 연재하고 있는 Psi 입니다.
제 강좌는 제가 참고했던 무수히 많은 책, 인터넷을 돌아다니며 얻은 지식, 그리고 제 경험에서 우러나온 모든 것을 잘 버무려서 만든 것이기 때문에, C 언어를 사용할 줄 아시는 분들이라도, 한 번쯤은 훑어 보시는 것을 추천합니다.
C 언어를 공부하면서 반드시 지켜야 할 수칙
강좌를 한 번 다 읽었다면 내가 뭘 배웠는지 머리속으로 그려본다.
만약 위 과정이 잘 되지 않는다면 다시 한 번 강좌를 읽는다. 만약 강좌가 이해가 안되면 혼자서 낑낑 거리지 말고 (물론 이러한 자세도 중요하지만) 거침없이 댓글을 올리면 48 시간 대기 중인 Psi 가 댓글을 달아준다. 다만 잘 모르겠는 부분은 정확히 지적해 주면 좋다.
물론 강좌가 이상하다면 거침없이 댓글을 날려야 한다. 필자도 오타(!)를 내거나 오개념(설마....) 을 올릴 수 도 있다.
강좌에 나오는 소스 코드들은 모두 손 으로 직접 쓴다.
Ctrl + C
는 절대 금물. 다만, 소스 코드를 아무리 그대로 배꼈는데도 불구하고 이상한 오류가 나는 경우는 그냥 복사해도 좋다. 하지만 그 오류가 무엇인지 알아내는 것이 더욱 중요하다.강좌를 따라 프로그램을 만들면 자기 멋대로 수정하는 버릇(?) 을 가져야 한다.
자기가 만든 '아무리 이상한' 프로그램이라도 자부심을 갖고 인터넷에 올려보자.
현재까지 나온 강좌들의 목록 입니다.
참고 사항
현재 씹어먹는 C 언어를 동영상 강의로 제작하고 있습니다. 아직 전체 강의가 동영상으로 만들어지지는 않았지만 일부 강의를 보고 싶으신 분들은 여기 에서 확인해보세요! 모두의 코드 공식 채널 에서 보셔도 됩니다.
C 언어 강좌 총 목록
0. 내가 C 언어를 공부하기 전에 알았으면 좋았을 것들
C 언어를 본격 접하기 앞서 알아야 할 배경 지식들에 대해서 간단하게 다룹니다. 굳이 안 읽고 바로 다음 강좌로 넘어가게 되지만, 이 글을 읽은다면 C 언어를 공부하면서 나오게될 궁금증을 조금이나하 해소하는데 도움이 될 것입니다.
1. C 언어가 뭐야?
C 언어를 배우기 위한 기본적인 프로그램을 설치한다.
2 - 1. C 언어 본격 맛보기
Hello, World!
를 만들고 이에 대한 설명
2 - 2. 주석(Comment)에 대한 이해
주석이 무엇인지 이해한다.
2 - 3. 컴퓨터가 수를 표현하는 방법 (이진법)
십진법, 이진법, 16 진법에 친숙해 지고 컴퓨터 메모리의 단위(비트, 바이트, 워드, 더블워드)를 안다.
3. 변수가 뭐지?
변수(정수형, 실수형) 가 무엇인지 배우고, 기수법에 대해 알아본다
4 - 1. 계산하리
C 언어의 연산자(사칙연산, 쉬프트, 비트 연산자) 들에 대해 알아본다.
4 - 2. 컴퓨터가 음수를 표현하는 방법 (2의 보수)
컴퓨터가 2 의 보수법을 이용해서 어떻게 음수를 표현하는지, 그리고 정수 오버플로우란 무엇인지 배워본다.
5. 문자 입력 받기
문자 데이터에 저장, scanf 의 이용
6. 만약에...(if 문)
if
문에 대해 알아본다. (물론 else
도..)
7. 뱅글 뱅글 (for, while)
반복문(loop) 에 대해 알아본다.
8. 우분투 리눅스에서 C 프로그래밍 하기
우분투 리눅스에서 GCC
의 설치, GCC
를 이용한 프로그래밍, 초보적 vi
사용법을 배운다
9. 만약에.. 2탄 (switch 문)
switch
문 사용하기, switch
문은 if
문과 내부적으로 무엇이 다를까?
10. 연예인 캐스팅(?) (C 언어에서의 형 변환)
형변환(캐스팅) 하기, 부동 소수점 방식의 원리와 이해, 비트와 바이트에 대해 알아본다.
11 - 1. C 언어의 아파트 (배열), 상수
C 언어의 배열(Array) 의 대한 기본적 내용과, 상수에 대해 알아본다.
11 - 2. C 언어의 아파트2 (고차원의 배열)
2 차원 배열에 대한 이해와 메모리 상의 형태, 그리고 3차 이상의 배열에 대해 알아본다.
12 - 1. 포인터는 영희이다! (포인터)
포인터에 대해 기초를 완벽히 다져준다! *
와 &
연산자의 이해
12 - 2. 포인터는 영희이다 2! (포인터)
상수 포인터, 포인터의 덧셈과 뺄셈, 배열과 포인터와의 관계, []
연산자를 알아본다!
12 - 3. 포인터는 영희이다 3! (포인터)
배열 포인터 (1 차원, 2 차원 등등), 포인터 배열, 더블 포인터에 대해 알아본다!
13 - 1. 마술 상자 함수(function)
함수의 필요성, 함수의 정의, 함수의 리턴값, 함수의 인자, main
함수에 대해 알아본다!
13 - 2. 마술 상자 함수 2 (function)
포인터 형태의 인자, 배열을 인자로 받기, 함수의 원형에 대해 알아본다!
13 - 3. 마술 상자 함수 3 (function)
더블포인터 인자, 2차원 배열 인자, 상수 인자, 함수 포인터에 대해 알아본다.
13 - 4. 마술 상자 함수 (생각해볼 문제에 대한 아이디어)
13 - 3 강의의 마지막 생각해볼 문제들은 정말로 중요한 것입니다. 이 강의에서는 이들에 대해 다루고 있습니다.
14. 컴퓨터의 머리로 따라가보자 - 디버깅(debugging)
C 프로그래밍에 관련은 없지만 컴퓨터 프로그래밍을 한다면 매우매우 중요한 것이 바로 디버깅이 아닐까 싶습니다.
15 - 1. 일로 와봐, 문자열(string)
C 프로그래밍에서 중요한 부분인 문자열에 관해 알아본다.
15 - 2. 일로와봐, 문자열(string) - 버퍼에 관한 이해
입력 버퍼(stdin) 에 대한 이해와 고질적인 scanf 문제의 발생 원인과 해결책에 대해 알아본다.
15 - 3. 일로와봐, 문자열(string) - 문자열 지지고 볶기 & 리터럴
문자열 리터럴(literal) 에 관한 이해 및 문자열을 이용한 여러가지 작업들에 대해 알아본다.
15 - 4. 일로와봐, 문자열(string) - 도서 관리 프로젝트
도서 관리 프로젝트를 만들며 문자열을 다루고, 함수를 이용한 프로그래밍에 친근해진다.
16 - 1. 모아모아 구조체(struct)
구조체에 대한 기본 개념 정의 및 이해, 구조체 포인터 및 ->
연산자에 대한 설명
16 - 2. 모아 모아 구조체(struct) - 구조체 인자로 가진 함수
구조체 포인터에 대한 확실한 이해, 구조체 포인터 인자로 받는 함수, 구조체의 대입에 대해 알아본다
16 - 3. 구조체와 친구들(공용체(union), 열거형(enum))
구조체의 나머지 잡다한 기능들에 대한 이해, 공용체, 열거형에 대해 알아본다.
17. 변수의 생존 조건 및 데이터 세그먼트의 구조
여러가지 형식의 변수(지역, 전역, 정적) 에 대해 알고 데이터 세그먼트의 구조를 파악한다.
18 - 1. 파일 뽀개기 (헤더파일과 #include, 모듈화 프로그래밍)
하나의 소스파일에서 탈피해 여러가지 파일들로 나누어 모듈화 프로그래밍을 하고 헤더파일과 #include
를 이해한다.
18 - 2. 파일 뽀개기 (# 친구들, 라이브러리)
여러가지 전처리기 명령(#include, #define, #ifdef, #endif, #else
) 에 대해 알고, 표준 C 라이브러리를 사용한다.
19. main 함수의 인자, 텅 빈 void 형
void
형 포인터, 함수에 대해 알고, main
함수의 인자 (argc, argv
) , 그리고 포인터 배열에 대해 이해한다.
20 - 1. 동동동 메모리 동적 할당(Dynamic Memory Allocation)
malloc 함수에 대한 이해, 1 차원 및 2 차원 배열 (정확히 말하면 2 차원 배열과는 다르다) 메모리 동적 할당.
20 - 2. 메모리 동적 할당 + 메모리 갖고 놀기
구조체의 동적 할당, 노드(Node) 의 이해, 메모리 처리 관련 함수 (memmove, memcmp, memcpy) 의 이해
21. 매크로 함수, 인라인 함수
매크로 함수(macro function) 와 인라인 함수(inline function) 에 대해 이해한다.
22. C 언어의 잡다한 키워드들 (typedef, volatile, #pragma)
typedef, volatile, #pragma
키워드에 대해 알아보고, 특히 #pragma pack
과 #pragma once
에 대해서도 알아본다.
23 - 1. 파일 하고 이야기 하기 (파일 입출력에 대한 기본적 이해)
파일 입출력과 스트림이 무엇인지 알고 fopen, fgets, fputs, fgetchar
, fseek, 파일 위치 지정자에 대해 알아본다.
23 - 2. 파일 하고 이야기 하기 (파일 입출력)
파일 위치 지정자와 fopen 의 자세한 사용법("r+", "w+", "a", "a+"
) 에 대해 이해하고 fscanf, fprintf 함수를 다루며 도서 관리 프로그램에 입출력 기능을 추가해본다
23 - 3. 파일 하고 이야기 하기 (파일 입출력 - 마무리)
지난 도서 관리 프로그램의 마무리 이다.
24. 더 빠르게 실행되는 코드를 위하여 (C 코드 최적화)
더 훌륭한 코드를 위해서 C 언어에서 코드를 최적화 할 수 있는 여러가지 기법들을 살펴본다.
댓글을 불러오는 중입니다..