A Book on C
| 목차 | 정오표 | 다운로드 | TP    


역자 : 김명호
목차

  • 0 장

    영으로부터 시작 1
    0.1 왜 C 언어인가? 2
    0.2 ANSI C 표준 3
    0.3 C에서 C++로 4
    0.4 C와 C++에서 Java로 4


  • 1 장

    C의 개요 5
    1.1 프로그래밍과 준비 5
    1.2 프로그램 출력 6
    1.3 변수, 수식, 배정 10
    1.4 #define과 #include의 사용 14
    1.5 printf()와 scanf()의 사용 18
    1.6 제어의 흐름 21
    1.7 함수 29
    1.8 배열, 문자열, 포인터 37
    1.9 파일 47
    1.10 운영체제의 고찰 54
    요약 58
    연습 문제 60


  • 2 장

    어휘 원소, 연산자, C 시스템 71
    2.1 문자와 어휘 원소 72
    2.2 구문 규칙 75
    2.3 주석 77
    2.4 키워드 79
    2.5 식별자 79
    2.6 상수 81
    2.7 문자열 상수 82
    2.8 연산자와 구두점 83
    2.9 연산자의 우선 순위와 결합 법칙 84
    2.10 증가 연산자와 감소 연산자 86
    2.11 배정 연산자 88
    2.12 예제: 2의 거듭제곱 계산 90
    2.13 C 시스템 92
    요약 96
    연습 문제 98


  • 3 장

    기본 자료형 109
    3.1 선언, 수식, 배정 109
    3.2 기본 자료형 112
    3.3 문자와 char 자료형 113
    3.4 int 자료형 118
    3.5 정수적형 short, long, unsigned 119
    3.6 부동형 121
    3.7 typedef의 사용 124
    3.8 sizeof 연산자 125
    3.9 getchar()와 putchar()의 사용 126
    3.10 수학 함수 129
    3.11 변환과 캐스트 133
    3.12 16진 상수와 8진 상수 136
    요약 139
    연습 문제 140


  • 4 장

    제어의 흐름 151
    4.1 관계, 등가, 논리 연산자 151
    4.2 관계 연산자와 수식 153
    4.3 등가 연산자와 수식 155
    4.4 논리 연산자와 수식 157
    4.5 복합문 160
    4.6 수식과 공백 문장 161
    4.7 if와 if-else 문 162
    4.8 while 문 165
    4.9 for 문 169
    4.10 예제: 부울 변수 172
    4.11 콤마 연산자 173
    4.12 do 문 175
    4.13 예제: 피보나치 수열 177
    4.14 goto 문 180
    4.15 break 문과 continue 문 182
    4.16 switch 문 184
    4.17 조건부 연산자 185
    요약 187
    연습 문제 188


  • 5 장

    함수 201
    5.1 함수 정의 201
    5.2 return 문 205
    5.3 함수 원형 206
    5.4 예제: 거듭제곱 표 생성하기 207
    5.5 컴파일러 관점에서의 함수 선언 209
    5.6 함수 정의 순서의 다른 방법 210
    5.7 함수 호출과 값에 의한 호출 212
    5.8 대형 프로그램의 개발 214
    5.9 단정 218
    5.10 유효범위 규칙 219
    5.11 기억영역 클래스 222
    5.12 정적 외부 변수 227
    5.13 디폴트 초기화 229
    5.14 재귀 230
    5.15 예제: 하노이 탑 235
    요약 240
    연습 문제 242


  • 6 장

    배열, 포인터, 문자열 253
    6.1 1차원 배열 253
    6.2 포인터 256
    6.3 참조에 의한 호출 260
    6.4 배열과 포인터의 관계 262
    6.5 포인터 연산과 원소 크기 264
    6.6 함수 인자로서의 배열 265
    6.7 예제: 버블 정렬 266
    6.8 calloc()과 malloc()을 이용한 동적 메모리 할당 268
    6.9 예제: 합병과 합병 정렬 272
    6.10 문자열 279
    6.11 표준 라이브러리에 있는 문자열 조작 함수 281
    6.12 다차원 배열 286
    6.13 포인터 배열 292
    6.14 main() 함수의 인자 300
    6.15 래기드 배열 301
    6.16 인자로서의 함수 303
    6.17 예제: 함수의 근을 구하기 위한 이분법의 사용 306
    6.18 함수 포인터의 배열 312
    6.19 형 한정자 const와 volatile 317
    요약 319
    연습 문제 321


  • 7 장

    비트단위 연산자와 열거형 341
    7.1 비트단위 연산자와 수식 341
    7.2 마스크 346
    7.3 소프트웨어 툴:int 형의 비트단위 출력 347
    7.4 패킹과 언패킹 350
    7.5 열거형 354
    7.6 예제: 가위, 바위, 보 게임 357
    요 약 365
    연습 문제 366


  • 8 장

    전처리기 375
    8.1 #include의 사용 375
    8.2 #define의 사용 376
    8.3 인자를 갖는 매크로 378
    8.4 stddef.h에 있는 형 정의와 매크로 381
    8.5 예제: qsort()를 이용한 정렬 382
    8.6 예제: 인자를 갖는 매크로 387
    8.7 stdio.h와 ctype.h의 매크로들 393
    8.8 조건부 컴파일 394
    8.9 미리 정의된 매크로 397
    8.10 #과 ## 연산자 398
    8.11 assert() 매크로 399
    8.12 #error와 #pragma 사용 400
    8.13 행 번호 401
    8.14 대응 함수 401
    8.15 예제: 퀵 정렬 402
    요약 405
    연습 문제 407


  • 9 장

    구조체와 공용체 421
    9.1 구조체 421
    9.2 구조체 멤버 접근 425
    9.3 연산자의 우선 순위와 결합 법칙: 최종 고찰 429
    9.4 함수에서 구조체 사용 430
    9.5 구조체의 초기화 432
    9.6 예제: 포커 게임 433
    9.7 공용체 439
    9.8 비트 필드 442
    9.9 예제: 비트와 바이트의 접근 444
    9.10 ADT 스택 446
    요약 451
    연습 문제 452


  • 10 장

    구조체와 리스트 처리 463
    10.1 자기참조 구조체 463
    10.2 선형 연결 리스트 465
    10.3 리스트 연산 467
    10.4 리스트 처리 함수 471
    10.5 스택 476
    10.6 예제: 폴리시 표기법과 스택 연산 480
    10.7 큐 488
    10.8 이진 트리 493
    10.9 일반적인 연결 리스트 497
    요약 502
    연습 문제 503


  • 11 장

    입출력과 운영체제 511
    11.1 출력 함수 printf() 511
    11.2 입력 함수 scanf() 516
    11.3 fprintf(), fscanf(), sprintf(), sscanf() 520
    11.4 fopen()과 fclose() 522
    11.5 예제: 파일에서의 한 줄 띄어쓰기 524
    11.6 임시 파일과 우아한 함수 528
    11.7 파일의 임의의 위치 접근 531
    11.8 파일 기술자 입출력 533
    11.9 파일 접근 허가 535
    11.10 C 프로그램에서 명령어 실행 537
    11.11 C 프로그램에서 파이프 사용 538
    11.12 환경 변수 539
    11.13 C 컴파일러 541
    11.14 프로파일러의 사용 543
    11.15 라이브러리 544
    11.16 C 코드의 시간 측정 방법 547
    11.17 make의 사용 551
    11.18 touch의 사용 557
    11.19 그 밖의 유용한 툴들 558
    요약 560
    연습 문제 561


  • 12 장

    고급 응용 575
    12.1 fork()를 이용한 병행 프로세스 생성 575
    12.2 프로세스 오버레이: exec...() 부류 578
    12.3 pipe()를 이용한 프로세스간 통신 581
    12.4 신호 584
    12.5 예제: 식사하는 철학자들 587
    12.6 행렬의 동적 할당 592
    12.7 상태 리턴 600
    요약 606
    연습 문제 607


  • 13 장

    C에서 C++로 615
    13.1 출력 616
    13.2 입력 617
    13.3 함수 620
    13.4 클래스와 추상 자료형 622
    13.5 과적 624
    13.6 생성자와 소멸자 627
    13.7 객체지향 프로그래밍과 상속 629
    13.8 다형성 631
    13.9 템플레이트 634
    13.10 C++의 예외 636
    13.11 객체지향 프로그래밍의 장점 637
    요약 638
    연습 문제 640


  • 14 장

    C에서 Java로 647
    14.1 출력 648
    14.2 변수와 형 650
    14.3 클래스와 추상 자료형 651
    14.4 과적 653
    14.5 클래스형의 생성과 소멸 654
    14.6 객체지향 프로그래밍과 상속 655
    14.7 다형성과 오버라이딩 메소드 656
    14.8 애플릿 657
    14.9 Java 예외 659
    14.10 Java와 OOP의 장점 661
    요약 662
    연습 문제663


  • 부록 A

    표준 라이브러리 665
    A.1 진단: <assert.h> 666
    A.2 문자처리: <ctype.h> 666
    A.3 오류: <errno.h> 667
    A.4 부동형 한계: <float.h> 668
    A.5 정수적형 한계: <limits.h> 669
    A.6 지역화: <locale.h> 669
    A.7 수학: <math.h> 671
    A.8 비지역 점프: <setjmp.h> 673
    A.9 신호 처리: <signal.h> 674
    A.10 가변 인자. <stdarg.h> 675
    A.11 공통 정의: <stddef.h> 676
    A.12 입출력: <stdio.h> 677
    A.13 일반적인 유틸리티: <stdlib.h> 687
    A.14 메모리와 문자열 처리: <string.h> 694
    A.15 날짜와 시간: <time.h> 699
    A.16 기타 703


  • 부록 B

    언어 구문 707
    B.1 프로그램 707
    B.2 함수 정의 708
    B.3 선언 708
    B.4 문장 710
    B.5 수식 711
    B.6 상수712
    B.7 문자열 리터럴 713
    B.8 전처리기 713


  • 부록 C

    ANSI C와 전통적인 C의 비교 715
    C.1 형 715
    C.2 상수 716
    C.3 선언 717
    C.4 초기화 717
    C.5 수식 718
    C.6 함수 718
    C.7 변환 720
    C.8 배열 포인터 720
    C.9 구조체와 공용체 720
    C.10 전처리기 721
    C.11 헤더 파일 722
    C.12 기타 722


  • 부록 D
  • ASCII 문자 코드 725

  • 부록 E
  • 연산자 우선 순위와 결합 법칙 727

  • 찾아보기 729

(156-743) 서울시 동작구 상도로 369 숭실대학교 컴퓨터학부
02-820-0915, kmh@ssu.ac.kr, http://facebook.com/kmhssu