머리말 ... 3 인터넷 강의 안내 ... 8 Part 1 C 언어의 기본 ... 18 1장 이것이 C 언어다 ... 19 1-1 C 언어의 개론적 이야기 ... 21 1-2 프로그램의 완성 과정 ... 25 2장 프로그램의 기본 구성 ... 35 2-1 "Hello, World!" 들여다 보기 ... 37 2-2 주석이 들어가야 완성된 프로그램 ... 43 2-3 printf 함수의 기본적 이해 ... 45 2-4 연습문제 정답 및 해설 ... 49 3장 변수와 연산자 ... 53 3-1 덧셈 프로그램 구현을 위해 필요한 + 연산자 ... 55 3-2 C 언어는 데이터 저장을 위해 변수를 제공한다 ... 56 3-3 C 언어에는 다양한 연산자가 존재한다 ... 61 3-4 키보드로부터 데이터를 입력 받고 싶다! ... 73 3-5 C 언어의 키워드들 ... 78 3-6 연습문제 정답 및 해설 ... 78 4장 데이터 표현 방식의 이해 ... 81 4-1 컴퓨터가 데이터를 표현하는 방식 ... 83 4-2 정수와 실수의 표현 방식 ... 90 4-3 비트 단위 연산 ... 96 4-4 연습문제 정답 및 해설 ... 103 5장 상수와 기본 자료형 ... 109 5-1 C 언어가 제공하는 기본 자료형 ... 111 5-2 상수에 대한 이해 ... 123 5-3 자료형 변환에 대한 이야기 ... 127 5-4 연습문제 정답 및 해설 ... 132 6장 printf와 scanf 함수에 대한 고찰 ... 135 6-1 printf 함수 이야기 ... 137 6-2 scanf 함수 이야기 ... 145 7장 다양한 형태의 반복문 ... 149 7-1 반복문이란? ... 151 7-2 while문에 의한 문장의 반복 ... 151 7-3 do~while문에 의한 문장의 반복 ... 163 7-4 for문에 의한 문장의 반복 ... 167 7-5 연습문제 정답 및 해설 ... 175 8장 조건에 따른 흐름의 분기 ... 183 8-1 흐름의 분기가 필요한 이유 ... 185 8-2 if와 else ... 186 8-3 루프의 생략과 탈출: continue & break ... 198 8-4 switch에 의한 선택 실행 ... 202 8-5 원하는 곳으로 보내주마 goto! ... 208 8-6 연습문제 정답 및 해설 ... 210 9장 C 언어의 핵심! 함수 ... 215 9-1 함수를 정의하고 선언하기 ... 217 9-2 변수의 범위(scope)에 대하여 ... 230 9-3 재귀적 함수 호출에 대해 살펴봅시다 ... 247 9-4 연습문제 정답 및 해설 ... 253 10장 도전! 프로그래밍 ONE ... 259 Part 2 포인터와 배열의 시작 ... 264 11장 1차원 배열 ... 265 11-1 배열이란 무엇인가? ... 267 11-2 1차원 배열의 선언 및 초기화 ... 268 11-3 배열을 이용한 문자열 변수의 표현 ... 273 11-4 연습문제 정답 및 해설 ... 282 12장 포인터의 이해 ... 287 12-1 포인터란 무엇인가? ... 289 12-2 잘못된 포인터의 사용 ... 299 12-3 연습문제 정답 및 해설 ... 300 13장 포인터와 배열! 함께 이해하기 ... 303 13-1 포인터와 배열의 관계 ... 305 13-2 포인터 연산 ... 309 13-3 문자열 상수를 가리키는 포인터 ... 315 13-4 배열 요소로 포인터를 지니는 포인터 배열 ... 319 13-5 연습문제 정답 및 해설 ... 322 14장 포인터와 함수에 대한 이해 ... 325 14-1 함수의 인자로 배열 전달하기 ... 327 14-2 Call-By-Value와 Call-By-Reference ... 334 14-3 포인터와 const 키워드 ... 341 14-4 연습문제 정답 및 해설 ... 345 15장 도전! 프로그래밍 TWO ... 349 Part 3 포인터와 배열의 완성 ... 356 16장 다차원 배열 ... 357 16-1 다차원 배열 ... 359 16-2 3차원, 그 이상의 배열! ... 371 16-3 연습문제 정답 및 해설 ... 375 17장 포인터의 포인터 ... 379 17-1 포인터의 포인터에 대한 이해 ... 381 17-2 포인터의 필요성은 어디서 찾아야 하는가? ... 389 17-3 연습문제 정답 및 해설 ... 391 18장 다차원 배열 그리고 포인터 ... 393 18-1 2차원 배열 이름의 포인터 타입 ... 395 18-2 2차원 배열에서의 "arr[i]"와 "(arr+i)" ... 410 18-3 연습문제 정답 및 해설 ... 413 19장 함수 포인터와 void 포인터 ... 419 19-1 함수 포인터 ... 421 19-2 void형 포인터 ... 426 19-3 main 함수도 인자를 받을 줄 알아요 ... 427 20장 도전! 프로그래밍 THREE ... 433 Part 4 C 언어의 깊은 이해 ... 442 21장 문자와 문자열 처리 함수 ... 443 21-1 스트림과 데이터의 전송 ... 445 21-2 문자 단위 입ㆍ출력 함수 ... 447 21-3 문자열 단위 입ㆍ출력 함수 ... 452 21-4 표준 입ㆍ출력과 버퍼(Buffer) ... 455 21-5 문자열 조작 함수 ... 460 21-6 연습문제 정답 및 해설 ... 476 22장 구조체와 사용자 정의 자료형 1 ... 481 22-1 구조체란 무엇인가? ... 483 22-2 구조체와 배열 그리고 포인터 ... 491 22-3 연습문제 정답 및 해설 ... 501 23장 구조체와 사용자 정의 자료형 2 ... 505 23-1 구조체 변수의 전달과 리턴 ... 507 23-2 구조체의 유용함에 대한 두 가지 이야기 ... 512 23-3 구조체를 포함하는 구조체 ... 514 23-4 새로운 자료형의 완성 ... 517 23-5 공용체 ... 523 23-6 열거형 ... 527 23-7 연습문제 정답 및 해설 ... 532 24장 파일 입ㆍ출력 ... 535 24-1 파일의 개방(Open)과 종결(Close) ... 537 24-2 파일 입ㆍ출력 함수 ... 547 24-3 파일의 끝을 확인합시다 ... 553 24-4 Random Access 파일 입ㆍ출력 ... 562 24-5 연습문제 정답 및 해설 ... 565 25장 메모리 관리와 동적 할당 ... 569 25-1 C 언어의 메모리 구조 ... 571 25-2 메모리 동적 할당 ... 581 25-3 연습문제 정답 및 해설 ... 589 26장 매크로와 전처리기(preprocessor) ... 593 26-1 전처리기에 의한 매크로 처리 ... 595 26-2 매크로를 이용한 함수의 구현 ... 599 26-3 이미 정의되어 있는 표준 매크로 ... 609 26-4 연습문제 정답 및 해설 ... 610 27장 모듈화 프로그래밍 ... 613 27-1 프로그래밍의 모듈화 ... 615 27-2 헤더 파일의 구현과 유용성에 대한 이야기 ... 621 27-3 조건부 컴파일 ... 628 28장 도전! 프로그래밍 FOUR ... 637 Appendix ... 645 A-1 아스키 코드 ... 647 A-2 수학 관련 함수 ... 650 A-3 가변 인자 함수에 대한 이해 ... 651 A-4 컴파일러 사용법 ... 654