Chapter 1 C/C++ 언어의 개요 1. C 언어의 역사 ... 15 2. C 언어의 개요 ... 15 프로그래밍 언어의 발전 과정 ... 15 C 언어의 특징 ... 17 C를 사용하는 이유 ... 18 3. 절차지향 언어와 객체지향 언어 ... 19 절차지향 언어 ... 19 객체지향 언어 ... 20 캡슐화 ... 21 4. C++ 언어의 개발 환경 ... 21 C++ 언어는 어떻게 발전해 왔는가? ... 21 C++ 언어의 특징 ... 22 C++ 언어의 기능 ... 22 C++와 C의 몇 가지 차이점 ... 23 5. 프로그램의 구조 ... 24 C/C++ 프로그램의 구성 요소 ... 24 헤더 파일(header file) ... 26 사용자 정의 헤더 파일 ... 26 원시 파일(source file) ... 27 6. C++ 언어의 작성과 컴파일 ... 27 명령 라인 방식 ... 28 통합 개발 환경 ... 28 프로그램 작성 규칙 ... 29 C++ 언어의 대표적인 특성 ... 29 7. Dev-C++ 컴파일러 ... 30 Dev-C++ 설치하기 ... 30 Dev-C++를 이용하여 프로그램 코드 작성과 컴파일하기 ... 33 8. 진단 메시지 ... 37 연습문제 ... 39 Chapter 2 자료형 1. 자료형의 종류 ... 41 2. 메모리 ... 43 컴퓨터 메모리 ... 43 메모리의 구조 ... 43 3. 변수 ... 44 변수의 선언 ... 44 변수명 작성 원리 ... 44 변수의 종류 ... 45 4. 상수 ... 50 정수형 상수 ... 51 실수형 상수 ... 51 문자형 상수 ... 52 문자열형 상수 ... 54 나열형 상수 ... 57 5. typedef ... 58 연습문제 ... 59 Chapter 3 C/C++의 입출력 1. C 언어의 표준 입출력 함수 ... 61 C 언어의 출력 함수 ... 62 C 언어의 입력 함수 ... 66 변환 문자의 종류 ... 74 2. C++에서의 입출력 방법 ... 76 C와 C++ 입출력 비교 ... 77 C++ 형식 입출력 ... 81 문자(열) 입력 방법 ... 88 연습문제 ... 92 Chapter 4 연산자 1. 최우선 연산자 ... 101 [] 연산자 ... 101 () 연산자 ... 102 . 연산자 ... 103 -> 연산자 ... 104 2. 산술 연산자 ... 105 3. 증감 연산자 ... 107 4. 단항 연산자 ... 109 ! 연산자 ... 109 ~ 연산자 ... 111 & 연산자 ... 112 sizeof() 연산자 ... 112 5. 대입 연산자 ... 113 6. 관계 연산자 ... 115 7. 논리 연산자 ... 117 비트 논리 연산자 ... 117 일반 논리 연산자 ... 119 8. 형변환 규칙과 캐스트 연산자 ... 120 자동 형변환 ... 120 형변환 연산자(캐스트 연산자) ... 121 9. 삼항 연산자 ... 122 10. 비트 이동 연산자 ... 123 11. 콤마 연산자 ... 125 12. 나열형의 정의 ... 126 연습문제 ... 128 Chapter 5 제어문 1. 조건문 ... 135 단일 if문 ... 135 if~else문 ... 136 다중 if문 ... 141 switch~case문 ... 143 2. 반복문 ... 146 while문 ... 146 do~while문 ... 150 for문 ... 151 3. break문과 continue문 ... 156 break문 ... 156 continue문 ... 158 연습문제 ... 161 Chapter 6 함수 1. 함수의 구조 ... 167 함수의 선언 ... 169 함수의 원형이란? ... 169 함수명의 의미 ... 170 함수의 인수와 매개 변수 ... 170 함수의 반환 ... 171 함수의 정의 ... 171 함수의 인수와 반환 값 관점에서 본 4가지 종류 ... 172 함수의 작동 원리 ... 175 2. 함수와 함수 간의 인수 전달 방식 ... 177 call by value(값에 의한 전달 방식) ... 177 call by pointer(주소에 의한 전달 방식) ... 179 call by reference(참조에 의한 전달 방식) ... 180 3. 선행처리기와 inline 함수 ... 183 #define(매크로 기능) ... 183 #include(파일 포함) ... 185 #undef(매크로 취소) ... 186 그 외의 선행처리기 ... 186 일반 함수와 매크로 함수의 차이점 ... 187 4. 함수의 종류 ... 187 일반 함수 ... 187 매크로 함수 ... 188 확장 함수(inline 함수) ... 189 재귀 함수 ... 191 5. 기억장소의 종류 ... 194 변수의 사용 범위에 따라 ... 195 변수가 생성되는 장소에 따른 변수의 분류 ... 198 연습문제 ... 203 Chapter 7 배열 1. 배열이란? ... 209 2. 배열의 표현 방법 ... 209 배열의 선언 ... 209 배열의 크기 ... 210 3. 배열을 통한 문자열의 표현 방법 ... 213 4. 배열의 초기화 방법 ... 215 1차원 배열의 초기화 방법 ... 215 2차원 배열의 초기화 방법 ... 215 5. 배열의 내용과 주소의 표현 방법 ... 223 6. 배열에서의 인수 전달 ... 226 7. 소트 알고리즘 ... 228 셀렉션 소트 알고리즘 ... 228 버블 소트 알고리즘 ... 230 삽입 소트 알고리즘 ... 232 8. 순차 검색과 이분 검색 ... 233 순차 검색 ... 233 이분 검색 ... 235 연습문제 ... 237 Chapter 8 포인터 1. 포인터의 의미 ... 241 2. 포인터 변수와 선언 방법 ... 242 포인터 변수의 선언 예 ... 242 포인터 변수의 크기 ... 242 포인터 변수의 사용법과 번지 연산자(&) ... 243 3. 간접 연산자(*) ... 244 4. 배열과 포인터 ... 245 포인터에 관한 연산 ... 245 배열과 포인터의 관계 ... 248 포인터 변수를 이용한 문자열 출력 방법 ... 251 5. 포인터 배열 ... 251 6. 포인터의 적용 ... 258 void형 포인터 ... 259 함수형 포인터 ... 260 상수에 대한 포인터 ... 262 포인터 상수 ... 263 상수에 대한 포인터 상수 ... 264 7. main 함수의 인자 ... 265 8. 포인터를 이용한 문자열 함수의 구현 ... 268 문자열 복사 함수 ... 268 문자열 결합 함수 ... 269 문자열 비교 함수 ... 271 문자열 길이 함수 ... 273 문자열의 위치를 구하는 함수 ... 274 연습문제 ... 275 Chapter 9 동적 메모리 할당 1. 동적 메모리 할당이란? ... 277 2. 동적 메모리 할당 방법 ... 278 일반 자료형의 동적 메모리 할당과 제거 ... 278 배열에서 동적 메모리 할당 ... 281 포인터의 포인터를 통한 동적 메모리 할당 ... 287 연습문제 ... 292 Chapter 10 구조체 1. 구조체 선언 형식 ... 295 struct 키워드를 통해 구조체 선언 ... 295 구조체가 다른 구조체의 멤버로 들어가는 경우 ... 297 typedef문을 이용해서 구조체 선언 ... 298 2. 구조체 멤버에 접근하는 방법 ... 299 직접 멤버 접근 연산자(.) ... 299 간접 멤버 접근 연산자(->)를 통해 구조체 멤버에 접근 ... 301 구조체형 배열에 접근 ... 303 3. 구조체의 초기화 ... 308 4. 비트 필드의 사용 ... 310 5. 공용체의 개념 ... 313 공용체의 선언 ... 313 공용체 멤버의 참조 ... 313 6. typedef의 사용 ... 316 연습문제 ... 322 Chapter 11 클래스 1. 클래스란? ... 327 객체지향의 3가지 중요한 특징 ... 327 클래스 선언 ... 328 2. 클래스의 표현 ... 329 접근 지정자 ... 330 공용 멤버(public member) ... 330 전용 멤버(private member) ... 330 멤버 함수 정의법 ... 331 3. 객체 생성 방법 ... 332 4. 클래스 멤버의 접근 ... 335 클래스형 변수를 통한 접근 ... 335 클래스형 포인터를 통한 접근 ... 339 5. 상수 멤버 함수 ... 342 6. 클래스형 참조자를 통한 접근 ... 344 7. 클래스형 배열 ... 345 8. 클래스에서 함수형 포인터 호출 ... 347 9. 멤버 함수의 클래스로부터의 분리와 inline 함수화 ... 351 멤버 함수를 클래스 외부에서 정의 ... 351 멤버 함수를 클래스 외부에서 정의하고 inline 함수화 ... 353 10. 클래스 멤버 함수의 내부적 작동 원리 ... 355 11. friend 함수 ... 359 연습문제 ... 366 Chapter 12 C++ 중복 정의 1. 함수 중복 정의와 연산자 중복 정의 ... 369 함수 중복 정의 ... 369 연산자 중복 정의 ... 370 2. 연산자 중복 함수 ... 371 3. 산술 연산자의 중복 ... 372 4. 단항 연산자의 중복 ... 380 5. 입출력 연산자의 중복 함수 정의 ... 382 출력 연산자의 중복(≪) ... 383 입력 연산자의 중복(≫) ... 383 6. 첨자 연산자의 중복 ... 389 7. new/delete 연산자의 중복 ... 393 new 연산자의 중복 ... 393 delete 연산자의 중복 ... 393 연습문제 ... 398 Chapter 13 생성자 1. 생성자란? ... 401 2. 소멸자 ... 409 3. static 데이터 멤버와 멤버 함수 ... 413 정적 데이터 멤버 ... 413 정적 멤버 함수 ... 417 4. 복사 생성자 ... 422 연습문제 ... 430 Chapter 14 상속 1. 상속이란? ... 433 2. 파생 클래스의 정의 ... 435 3. 클래스 상속에서 베이스 클래스의 접근 허용 지정자 ... 435 4. 파생 클래스 쪽의 멤버 함수에서 베이스 클래스의 멤버 함수 호출 ... 443 5. 콜론 초기화 ... 444 6. 상속 관계에서 생성자의 사용 ... 447 7. 다중 상속 ... 453 연습문제 ... 455 Chapter 15 가상 함수 1. 가상 함수란? ... 459 2. 가상 함수의 형식 ... 459 3. 가상 함수의 기능 ... 460 4. 순수 가상 함수 ... 467 5. 가상 소멸자 ... 471 연습문제 ... 476 Chapter 16 템플릿 1. 템플릿이란? ... 481 2. 템플릿 함수 ... 481 3. 템플릿 클래스 ... 486 연습문제 ... 496 Chapter 17 파일 입출력 1. 파일 입출력 ... 497 2. 순차 파일로부터 데이터 읽어오기 ... 498 입출력을 위한 파일의 개방 ... 498 파일의 폐쇄 ... 501 3. 문자 단위의 파일 입출력 ... 501 4. 데이터의 추가 ... 506 5. 파일 입출력 오류에 관계된 멤버 함수 ... 510 6. 클래스형 데이터에 대한 파일 입출력 ... 511 연습문제 ... 519 찾아보기 ... 521