목차
제1장 C프로그래밍의 기초 ... 3
   1. 개론(Introduction) ... 3
   2. 기본해설 ... 5
      2.1 프로그래밍(Programming) ... 5
      2.2 고급 언어(Higher-Level Language) ... 6
      2.3 운영 체제(Operating System) ... 7
      2.4 컴파일 프로그램(Compiling Programs) ... 7
   3. C프로그램 작성(Writing a Program in C) ... 11
제2장 변수, 상수, 데이타형, 산술식(Variables, Constants, Data Types, and Arithmetic Expressions) ... 19
   1. 변수(Variables) ... 19
   2. 데이터형과 상수(Data Types and Constants) ... 21
      2.1 정수형(Type int) ... 22
      2.2 실수형(Type float) ... 23
      2.3 배정도형(Type double) ... 23
      2.4 문자형(Type char) ... 24
      2.5 한정사 long, short, unsigned ... 26
   3. 산술식(Arithmetic Expression) ... 28
      3.1 정수 연산과 단항 뺄셈 연산자 ... 31
      3.2 나머지 연산자(The Modulus Operator) ... 33
      3.3 정수와 실수의 변환(Integers and Floating point conversions) ... 35
   연습문제 ... 38
제3장 반복 프로그램(PROGRAM LOOPING) ... 41
   1. for 명령문(The for statement) ... 41
   2. 프로그램 입력(Program Input) ... 50
   3. 중복된 for 문(Nested for Loops) ... 52
      3.1 변형된 for 문(for Loop Variants) ... 55
   4. while 명령문(The while Statement) ... 56
   5. do 명령문(The do statement) ... 61
   연습문제 ... 64
제4장 판단하기(MAKING DECISIONS) ... 67
   1. if 명령문(The if Statement) ... 67
   2. if-else 명령문(The if-else Construct) ... 73
   3. 복합 관계 검사(Compound Relational Tests) ... 76
   4. 중첩된 if 문(Nested if Statements) ... 80
   5. else if 구조문(The else if Construct) ... 83
   6. switch 문(The switch statement) ... 92
   7. 플래그(Flags) ... 96
   8. 조건 수식 연산자(Conditional Expression Operator) ... 100
   연습문제 ... 103
제5장 배열(ARRAYS) ... 107
   1. 배열 요소의 초기화(Initializing Array Element) ... 120
   2. 문자 배열(Character Arrays) ... 122
   3. 다차원 배열(Multi-Dimensional Arrays) ... 128
   연습문제 ... 131
제6장 함수와 변수(FUNCTIONS AND VARIABLES) ... 133
   1. 매개변수와 지역변수(Arguments and Local Variables) ... 136
   2. 함수와 결과값(Returning Function Results) ... 141
      2.1 기본 리턴형과 void형(Default Return Type and Type void) ... 143
   3. 함수는 함수를 부르고...(Functions Calling Functions Calling Functions...) ... 147
      3.1 리턴형의 선언(Declaring Returned Types) ... 150
      3.2 함수 매개변수의 점검(Checking Function Arguments) ... 151
      3.3 탑-다운 프로그래밍(Top-Down Programming) ... 153
   4. 함수와 배열(Functions and Arrays) ... 154
      4.1 할당 연산자(Assignment Operators) ... 160
      4.2 다차원 배열(Muli-Dimensional Arrays) ... 166
   5. 전역 변수(Global Variables) ... 170
   6. 자동 변수와 정적 변수(Automatic and Static Variables) ... 174
   7. 재귀함수(Recursive Functions) ... 178
   연습문제 ... 183
제7장 구조체(STRUCTURES) ... 187
   1. 함수와 구조체(Functions and Structures) ... 194
   2. 시간 저장을 위한 구조체(A Structure for Storing the Time) ... 201
   3. 구체의 초기화(Initializing Structures) ... 205
   4. 구조체의 배열(Array of Structures) ... 206
   5. 구조체 안의 구조체(Structures Within Structures) ... 210
   6. 배열을 포함한 구조체(Structures Containing Arrays) ... 212
   7. 구조체의 변형(Structure Variants) ... 216
   연습문제 ... 218
제8장 문자열(CHARACTER STRINGS) ... 221
   1. 가변길이 문자열(Variable Length Character String) ... 225
      1.1 문자열의 초기화와 출력 ... 227
      1.2 두 개의 문자열의 동일성 비교 ... 230
      1.3 문자열의 입력(Inputting Character String) ... 233
      1.4 단일 문자 입력(Single Character Input) ... 235
      1.5 널 문자열(The Null String) ... 241
   2. Escape 문자(Escape Characters) ... 244
   3. 문자 열, 문자 구조체, 문자 배열(Character Strings, Structures, and Arrays) ... 247
      3.1 진보된 탐색 방법(A Better Search Method) ... 252
   4. 문자변환과 산술연산(Character Conversion and Arithmetic Operation) ... 257
   연습문제 ... 262
제9장 포인터(Pointers) ... 265
   1. 포인터와 구조체(Pointers and Structures) ... 272
      1.1 포인터를 포함한 구조체(Structures Containing Pointers) ... 274
      1.2 연결 리스트(Linked Lists) ... 277
   2. 포인터와 함수(Pointers and Function) ... 287
   3. 포인터와 배열(Pointers and Arrays) ... 293
      3.1 프로그램 최적화에 관한 간단한 미담 ... 298
      3.2 배열이냐 포인터냐?(Is It Array of Is It a Pointer?) ... 299
      3.3 문자열에 대한 포인터(Pointer to Character Strings) ... 301
      3.4 상수 문자열과 포인터(Constant Character Strings and Pointers) ... 303
      3.5 다시 보는 증가 연산자와 감소 연산자(Increment and Decrement Operators Revisited) ... 305
   4. 포인터 연산(Operations on Pointers) ... 309
   5. 함수에 대한 포인터(Pointer to Function) ... 311
   6. 포인터와 메모리 주소(Pointers and Memory Address) ... 313
   연습문제 ... 315
제10장 비트 연산(Operations On Bits) ... 317
   1. 비트 연산자들(Bit Operators) ... 318
      1.1 비트 단위 AND 연산자(Bitwise AND Operator) ... 319
      1.2 비트 단위 OR 연산자(Bitwise Inclusive OR Operator) ... 323
      1.3 비트 단위 XOR 연산자(Bitwise Exclusive OR Operator) ... 324
      1.4 1의 보수 연산자(Ones Complement Operator) ... 325
      1.5 다른 자료 형태에서 비트 단위 연산 ... 328
      1.6 좌 방향 비트이동 연산자(Left Shift Operator) ... 328
      1.7 우 방향 비트이동 연산자(Right Shift Operator) ... 329
   2. 비트 필드(Bit Fields) ... 334
   연습문제 ... 341
제11장 전처리기(Preprocessor) ... 343
   1. define 명령문 ... 343
      1.1 프로그램 확장성(Program Extendability) ... 348
      1.2 프로그램 이식성(Program Transportability) ... 350
      1.3 좀 더 복잡한 형태의 정의(More Advanced Typed of Definitions) ... 351
   2. include 명령문 ... 358
   3. 조건적 컴파일 ... 361
      3.1 ifdef, endif, else, and ifndef 명령문 ... 361
      3.2 if 전처리기 명령문(if Preprocessor Statement) ... 363
      3.3 undef 문(undef Statement) ... 364
   연습문제 ... 365
제12장 자료형의 확장(More on Data Types) ... 367
   1. 열거된 자료형(Enumerated Data Types) ... 367
   2. typedef 명령문(The Typedef Statement) ... 370
   3. 자료형 변환(Data Type Conversions) ... 372
   연습문제 ... 376
제13장 대형 프로그램에서의 작업 ... 377
   1. 분할 컴파일(Separate Compilations) ... 377
   2. 모듈간의 통신(Communication Between Modules) ... 379
      2.1 외부 변수(Extern Variables) ... 379
      2.2 정적 및 외부변수 기능(static versus extern variables and functions) ... 382
      2.3 Include 파일 ... 383
제14장 입력과 출력(Input and Output) ... 385
   1. 문자 입/출력 : getchar와 putchar ... 386
   2. 형식화된 입/출력 : printf와 scanf ... 386
      2.1 printf 함수 ... 387
      2.2 scanf 함수 ... 393
   3. 파일 입출력(File I/O) ... 398
      3.1 파일의 입출력 방향지정(Redirection of I/O to a File) ... 398
      3.2 파일의 끝(End of File) ... 400
   4. 파일 조작 함수(Special Functions for Handling Files) ... 402
      4.1 fopen 함수 ... 402
      4.2 getc와 putc 함수 ... 403
      4.3 fclose 함수 ... 406
      4.4 feof 함수 ... 406
      4.5 fprntf와 fscanf 함수 ... 407
      4.6 fgets와 fputs 함수 ... 407
      4.7 stdin, stdout, stderr 함수 ... 408
      4.8 exit 함수 ... 409
      연습문제 ... 411
제15장 기타 특성 및 고급 과정 ... 413
   1. break 문 ... 413
   2. continue 문 ... 414
   3. goto 문 ... 415
   4. null 문 ... 417
   5. unions (공용체) ... 418
   6. 콤마(comma) 연산자 ... 421
   7. 레지스터 변수(Resister Variables) ... 422
   8. 명령줄 매개변수(Command Line Arguments) ... 423
   9. 동적 메모리 할당(Dynamic Memory Allocation) ... 425
      9.1 calloc 함수 ... 426
      9.2 sizeof 연산자 ... 426
      9.3 free 함수 ... 428
부록A. C 언어 요약 ... 431
   1. 식별자(Identifiers) ... 431
   2. 주석(Comments) ... 432
   3. 상수(Constans) ... 432
   4. 자료 형과 선언(Data Types and Declaration) ... 433
   5. 수식(Expressions) ... 442
   6. 저장 형태(class)와 범 ... 456
   7. 함수들 ... 458
   8. 명령문 ... 459
   9. 전처리기 명령문(Preprocessor Statement) ... 464
부록B. 범하기 쉬운 프로그래밍 실수 ... 468
   1. 세미콜론(;)을 잘못 쓰는 것 ... 468
   2. 연산자 =와 ==를 혼동하는 것 ... 468
   3. 반환되는 형의 선언을 생략하는 것 ... 468
   4. 함수에 잘못된 매개변수를 전달하는 것 ... 469
   5. 연산자의 우선순위를 혼동하는 것 ... 469
   6. 문자 상수와 문자열을 혼동하는 것 ... 470
   7. 배열의 잘못된 범위를 사용하는 것 ... 470
   8. 문자열을 종료하는 널 문자를 위한 여분의 공간을 배열에 확보 하는 것을 잊는 것 ... 470
   9. 구조체의 멤버를 참조할때 ->연산자와 .연산자를 혼동하는 것 ... 470
   10. scanf 호출에서 포인터가 아닌 변수의 앞에 &를 빠뜨리는 것 ... 471
   11. switch 문에서 case의 끝에 break 문을 빠뜨리는 것 ... 471
   12. 전처리기 정의(definition)의 끝에 세미콜론을 삽입하는 것 ... 471
   13. 매크로 정의에서 매개변수 주위의 괄호를 빠뜨리는 것 ... 471
   14. define명령문에서 매크로의 이름과 나열된 매개변수 사이에 공백을 남기는 것 ... 472
   15. 매크로 호출에서 부수 효과를 갖는 수식을 사용하는 것 ... 472
부록C. 함수 라이브러리(C Library) ... 473
   1. 표준 입·출력 함수 : stdio.h ... 473
   2. 문자 평가 함수 : ctype.h ... 478
   3. 문자열 함수 : string.h ... 480
   4. 문자열과 수치 변환 함수 : stdlib.h ... 482
   5. 메모리 처리 함수 : mem.h ... 483
   6. 디렉토리 처리 함수 : dir.h ... 484
   7. 처리제어 함수 : process.h ... 485
   8. 시간함수 : time.h ... 485
   9. 저수준 입출력 함수 : io.h ... 486
   10. 기타 함수 : assert.h ... 488
부록D. Windows용 Turbo C++ 하에서의 디버깅 ... 489
부록E. Windows용 Turbo C++ 메뉴 소개 ... 495
부록F. ASCII 문자 집합(ASCII Character Set) ... 496
찾아보기 ... 498
닫기