목차
chap 1 C 언어의 소개 ... 15
   1.1 C 언어의 역사 ... 17
      1.1.1 C 언어 개발자와 개요 ... 17
      1.1.2 C 언어의 계보와 발전 과정 ... 17
   1.2 C 언어의 특성 ... 19
      1.2.1 C 언어의 특성 ... 19
      1.2.2 C 언어의 이용 분야 ... 20
      1.2.3 C 언어의 개발 단계 ... 21
   1.3 C 언어 컴파일 방법 ... 22
   1.4 gcc를 이용한 C 프로그래밍 ... 24
      1.4.1 소스 파일 작성 ... 24
      1.4.2 컴파일 ... 25
      1.4.3 프로그램 실행 ... 25
      1.4.4 gcc 이용 요약 ... 25
   1.5 Visual C++을 이용한 C 프로그래밍 ... 26
      1.5.1 Visual C++ 실행 ... 26
      1.5.2 새 프로젝트 생성 ... 27
      1.5.3 소스 파일 추가 ... 29
      1.5.4 소스 파일 편집 ... 30
      1.5.5 컴파일 ... 31
      1.5.6 프로그램 실행 ... 31
chap 2 C의 기초 ... 33
   2.1 화면 출력 ... 35
      2.1.1 새로운 코드의 입력 ... 35
      2.1.2 간단한 출력 프로그램 ... 35
      2.1.3 행 바꾸기 ... 36
      2.1.4 화면 출력 ... 37
   2.2 코드의 내용 ... 39
      2.2.1 프로그램 코드의 처리 흐름 ... 39
      2.2.2 main() 함수 ... 39
      2.2.3 한 명령문씩 처리 ... 40
      2.2.4 코드를 읽기 쉽게 작성 ... 41
      2.2.5 주석문 작성 ... 42
      2.2.6 또 다른 주석문 사용 방법 ... 43
      2.2.7 파일을 include한다 ... 43
   2.3 문자열과 숫자 ... 45
      2.3.1 리터럴(literal)이란? ... 45
      2.3.2 리터럴 ... 45
      2.3.3 다양한 토큰 ... 46
      2.3.4 문자 리터럴 ... 46
      2.3.5 Escape Sequence ... 47
      2.3.6 문자 코드 ... 48
      2.3.7 문자열 리터럴 ... 49
      2.3.8 숫자 리터럴 ... 50
   2.4 리터럴에 따른 출력 ... 53
      2.4.1 형식 변환자 ... 53
      2.4.2 변수의 출력 ... 54
      2.4.3 정수형 변수의 출력을 위한 형식 변환자 ... 54
      2.4.4 부동소수점수 변수의 출력 ... 55
      2.4.5 문자 변수의 출력 ... 56
      2.4.6 문자열 변수의 출력 ... 56
      2.4.7 printf() 함수의 정리 ... 57
      2.4.8 printf() 에서 변환 문자의 형식 지정 ... 58
      2.4.9 변환 문자 형식 지정에 의한 정수 출력 ... 59
      2.4.10 변환 문자 형식 지정에 의한 부동 소수점수의 출력 ... 59
      2.4.11 변환 문자 형식 지정에 의한 문자열의 출력 ... 60
      2.4.12 변환 문자를 이용한 데이터 변환 출력 ... 61
   2.5 예제 ... 62
chap 3 변수 ... 63
   3.1 변수 ... 65
      3.1.1 변수의 구조 ... 65
   3.2 식별자 ... 66
      3.2.1 변수의 이름이 되는 식별 ... 66
   3.3 데이터형(Data Type) ... 67
      3.3.1 데이터형의 구조 ... 67
   3.4 변수의 선언 ... 69
      3.4.1 변수의 선언 ... 69
   3.5 변수의 이용 ... 71
      3.5.1 변수에 값의 대입 ... 71
      3.5.2 변수 값의 출력 ... 72
      3.5.3 변수의 초기화 ... 73
      3.5.4 변수 값의 변경 ... 74
      3.5.5 다른 변수 값의 대입 ... 75
      3.5.6 값을 대입할 때 주의 사항 ... 77
      3.5.7 변수의 선언 위치에 대한 주의 사항 ... 78
   3.6 키보드에서 입력 ... 80
      3.6.1 키보드로부터 입력 ... 80
      3.6.2 입력을 위한 scanf() 함수 ... 80
      3.6.3 두 가지 이상의 값을 입력받기 ... 83
      3.6.4 변환 문자의 형식 지정을 통한 데이터 입력 ... 84
      3.6.5 표준 입력의 구조 ... 85
   3.7 상수 ... 86
      3.7.1 const의 지정 ... 86
      3.7.2 const의 구조 학습 ... 87
      3.7.3 const 키워드의 주의 사항 ... 88
   3.8 예제 ... 90
chap 4 식과 연산자 ... 95
   4.1 식과 연산자 ... 97
      4.1.1 식의 구조 ... 97
      4.1.2 식의 값을 출력 ... 98
      4.1.3 다양한 연산 ... 98
      4.1.4 키보드에서 입력받은 값의 덧셈 ... 100
   4.2 연산자의 종류 ... 103
      4.2.1 여리 가지 연산자 ... 103
      4.2.2 증가 연산자와 감소 연산자 ... 105
      4.2.3 증가ㆍ감소 연산자의 전치와 후치 ... 106
      4.2.4 대입 연산자 ... 108
      4.2.5 sizeof 연산자 ... 111
      4.2.6 시프트 연산자 ... 112
   4.3 연산자 우선순위 ... 114
      4.3.1 연산자 우선순위란? ... 114
      4.3.2 같은 우선순위의 연산자 사용 ... 117
   4.4 데이터형 변환 ... 118
      4.4.1 큰 크기의 데이터형으로 변환 ... 118
      4.4.2 작은 크기의 데이터형으로 대입 ... 119
      4.4.3 캐스트 연산자 ... 120
      4.4.4 다른 데이터형 간의 연산 ... 122
      4.4.5 같은 데이터형 간의 연산 ... 123
   4.5 예제 ... 126
chap 5 조건과 판단문 ... 129
   5.1 관계 연산자의 조건 ... 131
      5.1.1 조건의 구조 ... 131
      5.1.2 조건 기술 ... 131
      5.1.3 true와 false ... 133
      5.1.4 관계 연산자 ... 133
   5.2 if 문 ... 135
      5.2.1 if 문의 구조 ... 135
      5.2.2 if 문에서 복수의 명령문 처리 ... 137
      5.2.3 블록을 하지 않으면 어떻게 될까? ... 140
   5.3 if~else 문의 구조 ... 142
      5.3.1 if~else 문의 구조 ... 142
   5.4 복수 조건의 판단 ... 146
      5.4.1 if~else if~else의 구조 ... 146
   5.5 switch 문 ... 150
      5.5.1 switch 문의 구조 ... 150
      5.5.2 break 문이 빠져 있는 경우 ... 152
   5.6 논리 연산자 ... 154
      5.6.1 복잡한 조건의 판단 ... 157
      5.6.2 비트(bit) 단위의 논리 연산자 ... 158
      5.6.3 조건 연산자의 구조 ... 160
   5.7 예제 ... 163
chap 6 반복문 ... 165
   6.1 for 문 ... 167
      6.1.1 for 문의 구조 ... 167
      6.1.2 loop 내에서 변수의 기술 ... 170
      6.1.3 for 문의 응용 ... 171
   6.2 while 문 ... 173
      6.2.1 조건 기술의 생략 ... 175
   6.3 do~while 문 ... 178
      6.3.1 do~while 문의 구조 ... 178
   6.4 문의 중첩 ... 180
      6.4.1 for 문의 중첩 ... 180
      6.4.2 if 문 등과 조합한 중첩 ... 183
   6.5 처리 흐름의 변경 ... 184
      6.5.1 break 문의 구조 ... 184
      6.5.2 switch 문 중에서 break 문의 사용 ... 186
      6.5.3 continue 문의 구조 ... 187
   6.6 예제 ... 190
chap 7 함수 ... 197
   7.1 함수 ... 199
      7.1.1 함수의 구조 ... 199
   7.2 함수의 정의와 호출 ... 200
      7.2.1 함수의 정의 ... 200
      7.2.2 함수 호출 ... 201
      7.2.3 함수를 여러 번 호출 ... 204
      7.2.4 함수로 처리를 통합 ... 205
   7.3 인수 ... 207
      7.3.1 인수를 사용한 정보 전달 ... 207
      7.3.2 키보드로부터 입력 ... 210
      7.3.3 복수의 인수를 찾는 함수의 처리 ... 211
      7.3.4 인수가 없는 함수의 호출 ... 214
   7.4 리턴값(return value) ... 215
      7.4.1 리턴값이 없는 함수 ... 219
   7.5 함수의 이용 ... 221
      7.5.1 합을 구하는 함수 ... 221
      7.5.2 최대값을 구하는 함수 ... 222
   7.6 함수의 선언 ... 224
      7.6.1 함수의 선언 ... 224
   7.7 예제 ... 227
chap 8 포인터 ... 229
   8.1 어드레스 ... 231
      8.1.1 어드레스의 구조 ... 231
      8.1.2 변수의 어드레스 ... 231
   8.2 포인터 ... 234
      8.2.1 포인터의 구조 ... 234
      8.2.2 포인터로 변수의 값을 알기 ... 236
      8.2.3 포인터 정리 ... 238
      8.2.4 포인터 선언의 복습 ... 239
      8.2.5 포인터에 다른 어드레스 대입하기 ... 239
      8.2.6 포인터에 대입을 하지 않으면 어떻게 될까? ... 242
      8.2.7 포인터를 사용하여 변수를 변경하기 ... 242
   8.3 인수와 포인터 ... 245
      8.3.1 값에 의한 전달과 참조에 의한 전달 ... 247
   8.4 예제 ... 252
chap 9 배열 ... 255
   9.1 배열 ... 257
      9.1.1 배열의 구조 ... 257
   9.2 배열 선언 ... 258
      9.2.1 배열의 선언 ... 258
   9.3 배열의 이용 ... 260
      9.3.1 배열 요소에 값을 대입 ... 260
      9.3.2 배열 요소수를 출력 ... 261
      9.3.3 배열의 초기화 ... 262
      9.3.4 배열 첨자의 주의사항 ... 263
   9.4 배열의 응용 ... 264
      9.4.1 키보드 입력 ... 264
      9.4.2 배열 내용의 정렬 ... 265
      9.4.3 다차원 배열 ... 268
   9.5 배열과 포인터의 관계 ... 271
      9.5.1 배열의 구조 ... 271
      9.5.2 포인터 연산의 구조 ... 273
      9.5.3 배열명을 사용할 때 주의 사항 ... 275
   9.6 인수와 배열 ... 277
      9.6.1 배열을 인수로 사용하기 ... 277
      9.6.2 포인터를 인수로 사용 ... 278
      9.6.3 포인터에 [] 연산자를 사용 ... 280
   9.7 문자와 배열 ... 282
      9.7.1 문자와 배열의 관계 ... 282
      9.7.2 문자열 배열의 초기화 ... 283
      9.7.3 배열과 포인터의 차이점 ... 286
      9.7.4 문자열 조작 ... 287
      9.7.5 문자열을 취급하는 표준 라이브러리 함수 ... 288
      9.7.6 문자열을 배열에 복사 ... 290
      9.7.7 배열의 크기에 주의할 것 ... 291
   9.8 예제 ... 293
chap 10 실전 프로그래밍 ... 295
   10.1 변수와 스코프 ... 297
      10.1.1 변수의 종류 ... 297
      10.1.2 지역 변수명의 중복 ... 301
      10.1.3 전역 변수명의 중복 ... 302
   10.2 기억수명 ... 304
      10.2.1 변수의 기억수명 ... 304
      10.2.2 static 변수 ... 307
   10.3 동적 메모리 확보 ... 311
      10.3.1 동적 메모리 확보 ... 311
      10.3.2 동적 메모리의 해제 ... 312
      10.3.3 배열의 동적 확보 ... 315
   10.4 파일의 분할 ... 318
      10.4.1 파일의 분할 ... 318
      10.4.2 표준 라이브러리의 구조 ... 320
   10.5 예제 ... 323
chap 11 여러 가지 데이터형 ... 327
   11.1 typedef ... 329
      11.1.1 typedef의 구조 ... 329
   11.2 열거병 ... 330
      11.2.1 열거형의 구조 ... 330
      11.2.2 열거형 변수의 선언 ... 331
   11.3 구조체 ... 333
      11.3.1 구조체형의 구조 ... 333
      11.3.2 구조체 변수의 선언 ... 334
      11.3.3 멤버에 접근하는 방법 ... 335
      11.3.4 구조체의 초기화 ... 337
   11.4 구조체의 응용 ... 340
      11.4.1 인수로서 구조체의 사용 ... 340
      11.4.2 구조체의 포인터를 인수로 사용하기 ... 341
      11.4.3 구조체의 참조를 인수로 사용하기 ... 344
   11.5 공용체 ... 345
      11.5.1 공용형의 구조 ... 345
   11.6 예제 ... 348
chap 12 파일 입출력 ... 351
   12.1 파일의 열기와 닫기 ... 353
      12.1.1 파일 닫기 ... 355
   12.2 간단한 성적처리 프로그램 ... 356
      12.2.1 파일로부터 입력, 화면에 출력 ... 356
      12.2.2 파일 입출력의 개념 ... 357
      12.2.3 파일 입출력 ... 357
      12.2.4 파일 구조체 ... 359
      12.2.5 파일 입출력 ... 360
      12.2.6 입출력 함수의 사용 ... 363
      12.2.7 표준 입출력 함수의 사용 ... 364
      12.2.8 fgets() 함수를 이용한 파일 읽기 ... 364
      12.2.9 fputs() 함수를 이용한 파일 쓰기 ... 366
      12.2.10 fscanf() 함수와 fprintf() 함수 ... 368
      12.2.11 랜덤 파일 처리 ... 370
      12.2.12 이진 모드에 대한 파일 입출력 ... 371
   12.3 파일 입출력 프로그램 ... 373
      12.3.1 파일로부터 읽기 ... 376
   12.4 예제 ... 381
닫기