만화가 있는 C
도서명:만화가 있는 C
저자/출판사:서진택/성안당
쪽수:568쪽
출판일:2018-05-18
ISBN:9788931555431
목차
서문 / 3
왜 언어의 이름이 C++죠? / 6
C++와 C, 무엇이 다른가요? / 6
환경 / 12
1 들어가기 전에 / 14
Visual Studio 2013 프로젝트 설정 / 14
int가 차지하는 메모리의 크기 / 18
2 수학 함수를 C 함수로 바꾸기 / 19
아규먼트(argument)와 파라미터(parameter) / 26
관례(convention) / 27
이젠 할 수 있다! / 29
함수도 선언해야 한다 / 34
소스 문자 집합(source character set) / 41
3 이진수(binary number) / 49
보충해 주는 수: 보수(complement of a number) / 52
진보된 주제: 비트 플래그(bit flag), 비트 마스크(bit mask) / 57
실습문제 / 64
4 변수는 쓰기 전에 선언해야 한다: 데이터 형(data type) / 65
초기화(initialization) / 70
함수형 초기화(functional initialization) / 71
실수(real number)는 어떻게? / 72
부동 소수 표현(floating point notation): 진보된 주제 / 73
부동 소수의 가감승제(addition, subtraction, multiplication and division) / 79
형의 종류(sort of types) / 81
특별한 형 void / 82
실습문제 / 84
5 이스케이프 절차(Escape Sequence) / 85
특정 문자 강조(Highlight)하기 / 90
C++11: 원시 문자열(raw string) / 93
실습문제 / 94
6 포인터(pointer), [] 연산자 / 95
문자열(string)은 포인터 표현이다 / 103
진보된 주제: 포인터의 포인터, 함수 포인터 / 106
실습문제 / 107
7 문장(statement) vs. 표현식(expression) / 108
문장의 종류 / 116
실습문제 / 117
8 연산자(operator) / 118
산술(Arithmetic) / 119
할당(Assignment) / 123
비트(Bitwise) / 126
C++에서만 사용가능(C++ specific) / 131
new / 139
delete / 151
typeid / 152
dynamic_cast / 154
콤마(Comma) / 160
조건(Conditional) / 163
논리(Logical) / 165
후위 표기(Postfix) / 170
전처리(Preprocessor) / 179
참조/역참조(Reference/Dereference) / 181
관계(Relational) / 184
sizeof / 186
형 변환(casting, type conversion) / 189
함수형 형 변환(functional casting) / 192
실습문제 / 194
9 scanf( )에 &가 필요한 이유: 스택 동작 / 195
스택(stack): 자료구조의 정상 / 195
&의 역할 / 198
scanf()에 &를 적어야 하는 이유 / 213
진보된 주제: 포인터를 바꾸려면? / 214
실습문제 / 216
10 제어 구조 / 217
if문 / 221
switch문 / 228
진보된 주제: switch를 보는 컴파일러의 입장 / 232
for문 / 232
while문 / 239
do...while문 / 241
실습문제 / 244
11 프로젝트(project) 만들기 / 245
볼랜드(Borland) C++ 3.1인 경우 / 247
볼랜드 C++ 4.5인 경우 / 249
볼랜드 C++ 빌더(Builder)인 경우 / 253
마이크로소프트 비주얼 C++ 4.2인 경우 / 257
마이크로소프트 비주얼 C++ 5.0인 경우 / 261
비주얼 스튜디오(Visual Studio) 2013의 경우 / 266
실습문제 / 270
12 변수의 종류, 범위 규칙(scope rule) / 271
스택(stack) / 272
C++11에서 auto의 의미 / 274
힙(heap) / 277
레지스터(register) / 282
파일(file) / 285
가시범위(visibility)에 의한 구분 / 288
블록 범위(block scope) / 289
전역 범위(global scope) / 291
프로토타입 범위(prototype scope) / 294
진보된 주제: static에 관한 진실 / 295
실습문제 / 299
13 배열: 4차원의 세계(4-dimensional world) / 300
차원(dimension) / 300
같은 형의 변수를 여러 개 선언하는 방법 / 303
내용 연산자(content-of operator) [] / 305
2차원 배열(2-dimensional array) / 319
3차원 이상의 배열 / 326
배열의 전달 / 327
포인터 배열 / 330
울타리 막대기 문제: 가장자리 문제 / 334
진보된 주제 / 335
실습문제 / 335
14 참조표(lookup table) / 336
점수에 따라 등급을 출력하는 경우 / 338
기교(technique) / 339
임의의 숫자열 토글하기 / 340
임의의 사상(mapping) 구현하기 / 341
실습문제 / 343
15 포인터Ⅱ / 346
포인터의 포인터(pointer to pointer) / 350
참조(reference) / 358
가용 공간 리스트(available list): 진보된 주제 / 359
new와 delete / 364
2차원 배열의 할당 / 370
실습문제 / 372
16 사용자 정의형, 열거형 / 373
typedef(TYPE DEFinition) / 373
범위(scope) / 376
enum: 열거형 / 377
컴파일러의 입장 / 380
클래스에서 enum의 사용 / 381
실습문제 / 383
17 구조체(structure), 공용체(union) / 384
왜 이것이 필요한가? / 384
문법 / 385
구조체 멤버 참조 연산자: . 과 -> / 388
구조체 포인터가 사용된 경우 / 389
구조체의 필드를 바라보는 컴파일러의 입장:상대 주소(offset address) / 393
구조체의 전달(passing), 리턴(return) / 395
비트 필드 구조체(bit-field structure) / 403
진보된 주제: 구조체 필드, 자기 참조 구조체와 구조체 배열 / 407
불완전 선언(Incomplete Declaration) / 408
공용체(union) / 414
무명 공용체(anonymous union) / 418
연결 리스트(linked list) / 419
실습문제 / 419
18 파일(file) / 420
핸들(handle)이란? / 420
파일의 사용 / 423
파일 포인터(file pointer) / 427
이진 파일 vs. 텍스트 파일 / 428
고전(oldest), 그러나 ASCII / 430
텍스트 파일의 처리 / 434
이진 파일의 처리 / 436
버퍼링(buffering) / 437
실습문제 / 441
19 함수 포인터(function pointer) / 442
함수 포인터가 필요한 경우 / 442
함수 포인터 선언하기 / 444
함수 포인터 배열 / 446
오버로드된 함수의 주소 / 448
디폴트 파라미터(default parameter) / 449
함수 포인터 형 정의하기 / 450
진보된 주제: 멤버 함수의 주소 / 454
C++의 새로운 연산자: .*와 ->* / 456
진보된 주제: 멤버 함수 포인터의 응용 / 458
실습문제 / 462
20 전처리 명령어(preprocessing command) / 463
#include / 464
#define / 471
왜 매크로 상수를 사용하는가? / 474
매크로 함수(macro function) / 476
관례 / 478
미묘하지만 중요한 문제 / 479
#if와 defined 연산자 / 480
#undef, #line, #error와 #pragma / 486
미리 정의된 매크로(predefined macros) / 486
운영체제나 환경에 의존적인 설정이 필요하다면? / 491
실습문제 / 491
21 가변 인자(variable argument) / 492
스택 동작 / 496
1개의 형과 3개의 매크로 / 498
다른 예(another example) / 501
실습문제 / 502
22 메모리(memory) / 503
옛날 옛적 8비트와 16비트 시절 / 503
어려운 선택, 세그멘테이션(segmentation) / 505
인텔의 선택: 세그멘테이션(segmentation) / 506
64KB의 한계 / 511
메모리 모델(memory model) / 513
선형 주소(linear address) / 515
동적 할당, 그 내부(internal) / 517
최소 블록(minimum block): 패러그래프(paragraph) / 522
단편화(fragmentation) / 523
외부 단편화(external fragmentation) / 527
실습문제 / 530
23 표준 함수(standard function) / 531
C 표준라이브러리 헤더 파일들 / 532
형 지원 / 534
동적 메모리 할당 / 534
에러 처리 / 534
프로그램 유틸리티 / 535
가변 인자 / 535
날짜/시간 함수 / 536
스트링 라이브러리 / 536
알고리즘 함수 / 537
수치 함수 / 537
입.출력 지원 함수 / 538
지역화 함수들 / 539
원자(atomic) 연산 라이브러리 / 539
스레드(thread) 지원 라이브러리 / 539
실습문제 / 540
24 C++의 구조체(structure) / 541
좀 더 자연스러운 구조체 / 550
C++을 배우려는 독자들에게 / 559
실습문제 / 560
찾아보기 / 561