Proven C Book
프로븐 C 라이브러리와 함께하는 현대적 C 입문
초안(draft)
rubidus@gmail.comgithub.com/rubidus-api/proven_c_book
이 책은 C 언어 입문서와 proven C 라이브러리 소개를 겸하고 있습니다.
대상 독자는 C 언어에 막 입문하려는 초보자부터,
입문서를 막 뗀 중급자까지입니다.
이 판은 초안(draft)이다. 쪽 번호가 붙은 찾아보기와 정확한 조판은 PDF를 보라.
목차
제1부 — 바탕
제2부 — 전산의 기본과 배경지식
4 단순한 기계 모델 — C의 탄생5 워드와 주소 — C의 원형6 주소의 특수 지식 — 0번지, 정렬, 하위 비트7 정수의 표현 — 부호, 오버플로, 시프트8 수의 표현 — IEEE 754라는 계약9 문자와 텍스트 — 표준 속의 흉터10 스트림의 기원 — 펀치카드, 라인프린터, 프린터 터미널11 기억의 분화 — 레지스터, 캐시, 다층의 사다리12 속도의 기계장치 — 표준의 탄생13 컴파일러 최적화 — 추상 기계14 그래서 C는 추상적인 언어다
제3부 — 첫 프로그램
제4부 — 최소한의 도구 상자
제5부 — 선언: 이름을 만드는 법
제6부 — 값과 흐름
26 타입의 갈래 — 표준이 가른 것들27 정수 — 유한한 수의 세계28 정수의 연산 — 나눗셈, 비트29 암묵적 변환(implicit conversion) — 승격과 통상 산술 변환30 불리언과 비교31 결정 — if와 switch32 반복 — 루프와 불변식33 함수의 의미 — 값 복사와 부수효과34 대입과 부수효과
제7부 — 기억
35 객체, 주소, 포인터36 널 — 삼형제의 정식 취급37 포인터의 규칙 — 정렬과 프로버넌스38 배열39 다차원 배열40 배열과 포인터 — 언제 같고 언제 다른가41 반복의 기법 — 중첩, 탈출, 그리고 블록 만들기42 문자열43 안전한 입력 — 넘침을 막고, 실패를 다루기44 수명과 저장 기간45 동적 메모리
제8부 — 자료의 모양
제9부 — 깊은 구석들
제10부 — 구성
53 main의 세 얼굴 — 진입점과 종료 상태54 여러 파일 — 분할과 링크55 이름의 세계 — 네 이름 공간과 세 축56 이름 충돌을 다루는 법 — 접두어에서 namespace까지57 전처리기와 번역 단계58 가변 인자 함수59 함수를 값으로 — 함수 포인터60 선언을 읽는 법 — 두 가지 독법과 typedef61 표준 라이브러리의 지형
제11부 — 표준 라이브러리 정독
62 표준 라이브러리 한눈에 보기63 스트림의 실제 — <stdio.h> ①64 읽고 쓰기의 함정 — <stdio.h> ②65 문자열과 기억 — <string.h>66 잡동사니 서랍 — <stdlib.h>67 문자 분류 — <ctype.h>68 로케일 ① — 프로그램의 지역 설정69 로케일 ② — 숫자·통화·시간·정렬70 와이드 문자 ① — wchar_t와 멀티바이트 변환71 와이드 문자 ② — 플랫폼의 현실과 와이드 입출력72 실무 — 유니코드와 멀티바이트를 다루는 법73 수 — <math.h>·<fenv.h>·<tgmath.h>74 시간 — <time.h>75 진단과 제어 — <errno.h>·<assert.h>·<signal.h>·<setjmp.h>76 신호 — <signal.h>77 비지역 점프 — <setjmp.h>78 새 표준이 보탠 것과 *_s 논쟁79 갈래를 나누어 돌리기 — <threads.h>80 쪼개지지 않는 연산 — <stdatomic.h>81 넘침을 묻는 법 — <stdckdint.h>82 매크로에서 키워드로 — bool·nullptr과 그 동료들83 프로그램의 기억 배치 — 운영체제와 임베디드84 할당자의 속 — 힙, 대안 할당자, 대안 표준 라이브러리
제12부 — proven — 새로운 안정적인 기반
85 50년째 출하되는 다섯 가지 버그86 proven 시작하기87 에러는 값이다88 기반 — 바이트, 뷰, 그리고 넘치지 않는 산술89 할당은 매개변수다90 문자열과 텍스트91 형식화와 파싱 — 타입을 두 번 적지 않기92 컨테이너와 알고리즘93 바깥 세계 — 파일, 스트림, 시간, 난수94 경계 — 겹쳐 돌리기, 그리고 OS가 없을 때95 세 판으로 짜 보기 — 간이 JSON