목차
Part 1 포인터에 대한 궁금함?
chapter 1 변수와 포인터
1. 변수와 메모리 주소 = 5
1.1 변수와 메모리 할당 = 5
1.2 변수의 주소 = 8
1.3 주소의 연산 = 8
1.4 cast 연산자(형 변환 연산자) = 10
2. 포인터는 무엇인가? = 12
2.1 포인터 변수 = 13
2.2 포인터 변수의 활용 = 14
2.3 포인터 변수의 자료형 = 17
3. 포인터 연산자 = 21
3.1 포인터 식 = 21
학습정리 = 24
연습문제 = 25
chapter 2 배열(Array)과 포인터(Pointer)
1. 배열(Array)은 무엇인가? = 31
1.1 1차원 배열 선언 = 31
1.2 1차원 배열요소에 접근하기 = 33
1.3 2차원 배열 선언 = 34
1.4 2차원 배열요소에 접근하기 = 36
2. 배열 초기화 = 37
3. 배열의 주소개념 = 41
3.1 1차원 배열 주소 확인하기 = 41
3.2 2차원 배열 주소 확인하기 = 42
3.3 2차원 문자열 입출력 = 45
4. 배열과 포인터 = 46
4.1 1차원 배열과 포인터 = 46
4.2 2차원 배열과 포인터 = 48
5. 2차원 배열 포인터 다루기 = 51
5.1 배열 포인터 선언 = 51
5.2 2차원 배열 포인터 활용 = 52
학습정리 = 56
연습문제 = 57
chapter 3 문자열과 포인터
1. C 언어의 문자열 = 65
1.1 문자열이란 무엇인가? = 65
1.2 문자열 상수 포인터 = 67
1.3 포인터를 이용한 문자열 조작 = 68
1.4 string과 string[]의 차이점 = 71
2. const 키워드 = 76
3. 포인터를 이용한 함수 구현하기 = 80
3.1 문자열 복사함수 구현 = 80
3.2 문자열 비교함수 구현 = 82
학습정리 = 85
연습문제 = 86
chapter 4 포인터 배열과 다중 포인터
1. 포인터 배열은 무엇인가? = 93
1.1 포인터 배열 선언 = 93
1.2 문자열과 포인터 배열 = 95
2. 다중 포인터는 무엇인가? = 97
2.1 이중 포인터 선언 = 98
2.2 포인터 매개변수 = 99
학습정리 = 104
연습문제 = 105
chapter 5 함수 포인터
1. 함수 포인터란 무엇인가? = 111
1.1 함수 포인터 선언 = 111
1.2 함수 포인터 초기화 = 112
1.3 함수 포인터 호출 = 113
1.4 함수 포인터를 이용한 함수호출하기 = 114
2. 함수 포인터 배열이란? = 118
학습정리 = 126
연습문제 = 127
chapter 6 Project Ⅰ
1. 단어 찾기 프로그램 = 133
1.1 main() 함수 = 133
1.2 keyword_list() 함수 = 135
2. 2차원 포인터 배열을 이용한 판매관리 프로그램 = 137
2.1 main() 함수 = 138
2.2 product_list() 함수 = 141
3. 성적 처리 알고리즘 = 143
3.1 main() 함수 = 144
3.2 input() 함수 = 145
3.3 output() 함수 = 148
3.4 find() 함수 = 149
3.5 학생 정보 추가 = 151
Part 2 포인터 이삭줍기
chapter 7 cast 연산자
1. cast 연산자는 무엇인가? = 159
1.1 cast 연산자의 이해 = 159
1.2 cast 연산자를 이용한 다양한 형 변환 = 161
2. cast 연산자와 배열 = 163
2.1 1차원 배열을 2차원 배열로 형 변환 = 163
2.2 2차원 배열을 1차원 배열로 형 변환 = 167
2.3 포인터와 배열의 다양성 = 168
학습정리 = 171
연습문제 = 172
chapter 8 NULL 포인터와 void 형 포인터
1. NULL 포인터는 무엇인가? = 179
1.1 NUL 포인터 필요성 = 179
1.2 포인터 변수 NULL 초기화 = 181
1.3 NULL 포인터의 사용처 = 182
2. void 형 포인터 = 185
2.1 void형 포인터 선언과 규칙 = 185
2.2 void형 포인터 활용 = 187
학습정리 = 190
연습문제 = 191
chapter 9 함수의 가변 인자
1. 가변인자는 무엇인가? = 195
1.1 가변인자의 필요성 = 195
1.2 간단한 가변인자의 사용 = 196
1.3 가변인자를 위한 매크로 = 198
2. 가변인자의 활용 = 202
2.1 다양한 자료형을 출력하는 가변인수 = 202
2.2 다양한 자료형의 합을 구하는 가변인자 = 205
학습정리 = 207
연습문제 = 208
chapter 10 Project Ⅱ
1. 가변인자를 이용한 scanf() 함수 만들기 = 215
1.1 main() 함수 = 215
1.2 my_scanf() 함수 = 216
2. 콜백(CallBack) 함수를 이용한 다양한 자료형 비교 = 220
2.1 주프로그램과 부프로그램과의 관계 = 220
2.2 콜백 함수를 수행하기 위한 완전한 프로그램 = 223
2.3 qsort()(퀵 정렬하기) = 227
Part 3 포인터와 자료구조
chapter 11 포인터와 구조체
1. 구조체는 무엇인가? = 237
1.1 구조체 선언과 정의(사용자 정의형) = 237
1.2 구조체 멤버 접근 = 239
1.3 구조체 주소의 연산 = 241
1.4 구조체 포인터 = 242
1.5 구조체 멤버로 주소 저장하기 = 245
2. 자기 참조 구조체는 무엇인가? = 247
2.1 자기 참조 구조체 선언 = 248
2.2 자기 참조 구조체 선언 시 주의할 점 = 251
2.3 구조체가 메모리에 할당되는 크기 = 252
학습정리 = 254
연습문제 = 255
chapter 12 동적 메모리 할당과 링크드 리스트
1. 동적 메모리 할당이란 무엇인가? = 261
1.1 동적 메모리 함수 = 262
1.2 malloc() 함수와 free() 함수 = 263
1.3 동적 메모터 할당과 구조체 = 265
2. 동적 메모리 할당을 이용한 자기 참조 구조체 = 266
2.1 자기 참조 구조체의 필요성 = 267
2.2 자기 참조 구조체 활용 = 269
3. 단일 링크드 리스트 = 271
3.1 구조체 노드의 생성과 출력 = 272
3.2 구조체 노드의 검색 = 275
3.3 구조체 노드의 삭제 = 276
3.4 할당된 구조체 노드 모두 해제 = 280
4. 이중 링크드 리스트 = 281
학습정리 = 286
연습문제 = 287
chapter 13 스택(Stack)과 큐(Queue) 알고리즘
1. Stack을 링크드 리스트로 구현하기 = 295
1.1 링크드 리스트로 스택을 구현하기 위한 개념 = 295
1.2 링크드 리스트로 스택을 구현 = 297
1.3 노드 push = 299
1.4 노드 List 출력 = 301
1.5 노드 pop = 302
1.6 모든 노드 해제 = 303
2. Queue를 링크드 리스트로 구현하기 = 305
2.1 링크드 리스트로 큐를 구현하기 위한 개념 = 305
2.2 링크드 리스트로 큐를 구현 = 306
2.3 노드 put = 308
2.4 노드 List 출력 = 310
2.5 노드 pop = 311
2.6 모든 노드 해제 = 313
학습정리 = 315
연습문제 = 316
chapter 14 Project Ⅲ
1. 까꿍이네 편의점 = 323
1.1 프로그램 나누기 = 323
1.2 main() 함수 = 324
2. 상품관리 시스템 = 328
2.1 상품관리 구조체 배열 = 328
2.2 상품관리 함수들 = 329
2.3 상품정보 출력 함수 = 330
2.4 상품정보 입력 함수 = 331
2.5 상품정보 수정 함수 = 333
2.6 상품정보 파일 입출력 = 335
3. 판매관리 시스템 = 338
3.1 판매관리 구조체 = 338
3.2 판매관리 함수들 = 339
3.3 판매정보 입력 함수 = 340
3.4 판매정보 출력 함수 = 345
3.5 판매정보 취소 함수 = 349
3.6 판매정보 파일 입출력 = 352
APPENDIX A : 연산자의 우선순위 = 362
APPENDIX B : ASCII CODE TABLE = 363
INDEX = 367