책소개
이 책은 저자와 기획, 감수자의 10년간의 C언어 강의를 통한 모든 노하우를 담은 책이다. 900 페이지라는 두께에도 불구하고 빠른 속도의 학습이 가능할 뿐만 아니라, 독자가 원하는 정도의 깊이 있는 수준으로 내용을 담았다. C언어를 공부하려는 독자들을 위한 책으로 C언어에 대한 답을 찾지 못해서 고생하는 많은 학생들에게 명쾌한 답을 제시해 줄 것이다.
저자소개
벤처회사에서 개발자로 일하다가 IT분야의 집필과 강의로 처음 이름이 알려진 그는 2000년대 초반까지는 소프트웨어 아키텍트(Architect)로 일을 하다가, 2004년부터 지금까지 OpenGL-ES 그래픽스 라이브러리의 구현과 3D 가속 칩의 개발 및 크로노스 그룹(모바일 국제 표준화 컨소시엄)의 표준안에 관련된 일에 참여하였다.
또한 핸드폰용 DMB 칩의 개발에도 참여하였으며, 현재는 ㈜액시스소프트의 CTO로 있으면서 웹 기반 솔루션 개발에 관심을 갖고 있다. 시간이 날 때마다 조깅을 하며 다양한 구상을 하는 저자는, 방법론에 근거한 소프트웨어 설계 전문가가 모든 분야에서 활발히 활동하여 소프트웨어 발전에 기여해야 한다는 생각을 갖고 있다. 프로그래밍을 공부한다면 모르는 사람이 없을 것 같은 베스트셀러 저자이다. 여전히 쉽게 설명하는 방법에 대해 고민하고 있으며 그 고민 결과를 바탕으로 책을 집필하고 있다. 프로그래머라는 직업에 충실하기위해 적지않은 기간동안 집필활동이 없었지만 그간 축적된 에너지를 바탕으로 다수의 책을 쓸 계획을가지고 집필에 임하고 있다.
목차
PART 01 개발환경과 자료형 그리고 연산자
제1장 C언어의 기본적인 이해와 개발환경
1-1. C 프로그래밍의 이해
1-2. C 프로그램 개발환경의 이해
제2장 Dev C++와 C99
2-1. C99
2-2. Dev C++
제3장 프로그램의 기본 구성과 printf 함수의 이해
3-1. 프로그램의 기본 구성과 printf 함수의 기능 관찰하기
3-2. 이스케이프 시퀀스와 트라이그래프 시퀀스
3-3. printf 함수가 지니는 문자열 구성 능력
3-4. 서식문자, 변수 그리고 연산자에 대한 기본적인 이해
3-5. 들여쓰기와 컴파일의 대상에서 제외되는 주석!
3-6. Dev C++의 자동생성 코드
제4장 데이터 표현방식의 이해
4-1. 진수와 진수변환
4-2. 데이터 표현의 단위(비트, 바이트 ,워드)
4-3. 정수의 표현방식
4-4. 실수의 표현방식
4-5. 정수와 실수의 표현방식, 그리고 변수와의 관계
제5장 자료형(Data Type)과 변수 그리고 상수의 표현
5-1. C언어의 기본 자료형(Data Type): 정수형
5-2. C언어의 기본 자료형(Data Type): 실수형
5-3. 적절한 자료형의 선택 기준: 정수 자료형 기준
5-4. 적절한 자료형의 선택 기준: 실수 자료형 기준
5-5. 변수의 선언방식과 조건
5-6. 변수의 상대적인 개념 상수!
5-7. 접미사에 따른 상수의 자료형
5-8. 상수의 표현에 대한 정확한 이해
제6장 C 언어의 기본 연산자
6-1. 산술 연산자를 통해서 보는 연산의 원리
6-2. 연산자들의 우선순위와 결합방향
6-3. 다양한 연산자들의 소개
6-4. 자료형 변환 연산자, sizeof 연산자
6-5. 연산의 결과가 남기는 것은?
6-6. 자동으로 자료형이 변환되는 경우
제7장 함수의 이해와 디자인
7-1. 함수란 무엇인가?
7-2. 함수를 구성하는 요소에 대한 이해
7-3. 함수의 호출
7-4. 다양한 함수를 만들어보자.
7-5. 함수의 정의와 그에 따른 원형의 선언
7-6. 함수와 관련해서 이런 내용들이 궁금하다!
7-7. 하드웨어 관점에서 한번 이해해 보시겠습니까?
제8장 실력 다지기 연습문제 01
PART 02 흐름의 컨트롤과 데이터의 표현
제9장 키보드 입력에 사용되는 scanf 함수의 이해
9-1. scanf 함수를 이용한 정수와 실수의 입력
9-2. scanf 함수의 첫 번째 문자열이 의미하는 것!
제10장 실행흐름의 컨트롤 1편! 분기(Branch)
10-1. if 그리고 else
10-2. if~else의 중첩을 대신할 수 있는 switch
10-3. 원하는 곳으로 보내주마 goto!
제11장 실행흐름의 컨트롤 2편! 반복(Loop)
11-1. 스코프(Scope)에 대한 첫 소개
11-2. while문에 의한 문장의 반복
11-3. do~while문에 의한 문장의 반복
11-4. for문에 의한 문장의 반복
11-5. 반복문의 중첩(Nested Loop)
제12장 문자의 표현 방법과 문자 관련 표준함수들
12-1. 컴퓨터는 문자를 표현할 줄 안다. 그러나 CPU는 모른다.
12-2. 문자의 표현방법
12-3. 문자 관련 함수들
제13장 메모리 구조와 변수
13-1. 하드웨어 관점에서의 메모리 공간
13-2. 특성에 따라 나뉘어지는 메모리 공간!
13-3. 변수의 종류에 따른 특성과 할당 위치
제14장 printf 함수와 scanf 함수의 서식문자 완벽 정리!
14-1. printf 함수의 기본 서식문자
14-2. printf 함수의 서식문자 조합
14-3. scanf 함수의 기본 서식문자와 서식문자의 조합
제15장 비트 연산자와 그의 활용
15-1. 비트단위 연산자들의 종류와 기능
15-2. 비트 쉬프트(Shift) 연산자
15-3. 비트 연산자들의 활용
제16장 실력 다지기 연습문제 02
PART 03 배열의 이해와 활용
제17장 1차원 배열의 이해와 활용
17-1. 배열이라는 존재가 필요한 이유
17-2. 1차원 배열의 이해와 활용
17-3. 배열의 특성과 위험성 그리고 VLA(가변 길이 배열)
제18장 문자열의 이해와 표현
18-1. 이제 상수에 대해서 결론을 내립시다.
18-2. 1차원 char형 배열을 이용한 문자열의 표현
제19장 다차원 배열의 이해와 활용
19-1. 2차원 배열의 이해와 적용
19-2. 2차원 배열의 초기화
19-3. 2차원 배열과 1차원 배열의 관계
19-4. 2차원 배열에서의 arr[0], arr[1], arr[2]를 파헤치자!
19-5. 3차원 배열에 대한 소개
제20장 배열을 함수의 인자로 전달하기
20-1. 함수의 인자로 1차원 배열 전달하기
20-2. 함수의 인자로 다차원 배열 전달하기
제21장 실력 다지기 연습문제 03
PART 04 포인터의 이해와 활용
제22장 포인터의 개념적인 이해
22-1. 포인터는 메모리의 주소와 아주 깊은 관련이 있지요
22-2. 포인터 변수 선언하기
22-3. 포인터 형(Type)과 * 연산자
22-4. 잘못된 포인터 사용의 예와 널(NULL) 포인터
22-5. & 연산을 통해 얻은 주소 값은 단순한 숫자가 아닙니다.
22-6. 문자열 배열과 문자열을 참조하는 포인터
제23장 포인터의 포인터와 포인터 배열
23-1. 포인터의 포인터
23-2. 포인터 배열
제24장 배열과 포인터 그리고 포인터 연산
24-1. 제한된 형태의 포인터 연산
24-2. 배열의 이름은 상수 형태의 포인터
24-3. 다차원 배열 이름의 포인터 형
제25장 함수 중심의 포인터 활용과 메모리의 동적 할당
25-1. Call-By-Value vs. Call-By-Reference
25-2. 자료형에 이름을 부여하는 typedef 키워드
25-3. 메모리 공간의 동적 할당
제26장 메모리 컨트롤 함수와 한정자(Type Qualifiers)
26-1. 한정자(Type Qualifiers) 그리고 const
26-2. volatile 그리고 restrict
26-3. 메모리 컨트롤 함수
26-4. main 함수로의 문자열 전달
제27장 함수 포인터와 함수 포인터 기반의 표준 함수들
27-1. 함수 포인터(Function Pointer)
27-2. 버블 정렬(Bubble Sort)의 이해와 함수 포인터 기반의 함수 정의
27-3. 함수 포인터를 인자로 요구하는 표준 함수들
제28장 실력 다지기 연습문제 04
PART 05 매크로와 파일 그리고 다양한 표준함수들
제29장 문자열 관련 표준 함수
29-1. gets 함수와 puts 함수, 그리고 버퍼(Buffer)
29-2. 문자열 컨트롤 함수들
29-3. 문자열의 정보를 파헤치는 함수들
29-4. printf와 scanf의 문자열 배열 버전(sprintf & sscanf)
제30장 매크로와 전처리기(Preprocessor)
30-1. 전처리기(선행처리기)와 매크로
30-2. 대표적인 선행처리 명령문
30-3. 조건부 컴파일(Conditional Compilation)을 위한 매크로
30-4. 매개변수의 결합과 문자열화
30-5. 그밖에 매크로
제31장 구조체(Structure Types)
31-1. 데이터를 하나로 묶을 수 있으면 좋겠다.
31-2. 첫 번째 구조체의 정의
31-3. 구조체 변수로 가능한 것과 불가능한 것
31-4. 구조체의 정의에 포함되는 typedef 선언과 구조체 배열
31-5. 구조체의 추가적인 특성과 메모리 관계
제32장 공용체 그리고 열거형
32-1. 공용체의 정의와 의미
32-2. 열거형(Enumerated Types)의 정의와 의미
32-3. 지금까지 설명하지 않은 구조체, 공용체, 열거형의 공통된 특성
제33장 파일 입출력
33-1. 파일과 스트림(Stream) 그리고 기본적인 파일의 입출력
33-2. 파일의 개방 모드(mode)
33-3. 기본적인 파일 입출력 함수들의 활용
33-4. 텍스트 데이터와 바이너리 데이터의 동시 입출력
33-5. 임의 접근을 위한 파일 위치 지시자의 이동
33-6. 표준 입력 및 출력 그리고 에러의 리다이렉션
33-7. 입력과 출력을 동시에 하기 위한 r+, w+, a+의 활용
제34장 재귀 함수와 다양한 표준 함수들
34-1. 재귀의 이해와 재귀 함수의 정의
34-2. 수학 관련 함수들
34-3. 시간과 날짜 관련 함수들
34-4. 가변인자 함수의 정의와 이해
제35장 파일의 분할과 헤더파일의 디자인
35-1. 파일의 분할
35-2. 둘 이상의 파일을 컴파일하는 방법과 static에 대한 고찰
35-3. 헤더파일의 디자인과 활용
제36장 실력 다지기 연습문제 05
36-1. 명함관리 프로그램 제작 01단계: 데이터의 입력과 조회
36-2. 명함관리 프로그램 제작 01단계의 답안
36-3. 명함관리 프로그램 제작 02단계: 파일의 분할
36-4. 명함관리 프로그램 제작 02단계의 답안
36-5. 명함관리 프로그램 제작 03단계: 파일 입출력을 통한 데이터 유지
36-6. 명함관리 프로그램 제작 03단계의 답안