C에 대한 전체적인 내용을 공부할 수 있는 입문서. 특히 메모리구조와 할당방식에 대해 자세히 다룬 것이 좋았다.

아쉬운점이라면 가끔 너무 친절해서 학생이 뭔가 생각해보기도전에 떠먹여주는 느낌이다. 연습문제는 좀 더 많았으면 좋겠지만 내용은 적당한 것 같다.





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. 함수와 관련해서 이런 내용들이 궁금하다! 

제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단계의 답안