책소개
이 책은 C 프로그래밍 언어를 이용해서 프로그램을 작성하는 방법을 알려주는 지침서이며, C++, Objective-C, C#, Java 등 수많은 객체 지향 언어의 근간을 이루고 있는 C 언어에 대해 다양한 수준의 독자들이 쉽게 이해할 수 있도록 명쾌하게 기술하고 있다.
목차
Chapter 01 기본 사항
프로그래밍
고급 언어
운영체제
컴파일
통합개발환경
언어 해석기
Chapter 02 첫 번째 프로그램 컴파일 및 실행
컴파일하기
실행하기
첫 번째 프로그램 이해하기
변수값 출력하기
주석
연습문제
Chapter 03 변수, 데이터 형식, 산술식
데이터 형식과 상수에 대한 이해
- 정수 형식 int
- 부동 소수점 숫자 형식 float
- 확장 정밀도 형식 double
- 단일 문자 형식 char
- 부울 데이터 형식 _ Bool
- 형식 지정자: long, long long, short, unsigned, signed
변수
산술식
- 정수 연산과 단항 빼기 연산자
할당 연산자
_Complex, _Imaginary 형식
연습문제
Chapter 04 반복하기
삼각수
for 문
- 관계 연산자
- 실행 결과의 정렬
- 프로그램 입력
- for 반복의 중첩
- 변형 for 문
while 문
do 문
break 문
continue 문
연습문제
Chapter 05 판단하기
if 문
- if~else 구조
- 복합 조건 판단
- 중첩 if 문
- else if 구조
switch 문
부울 변수
조건 연산자
연습문제
Chapter 06 배열
배열 정의
- 배열 요소를 카운터로 이용하기
- 피보나치(Fibonacci) 수열 생성
- 배열을 이용한 소수 생성
배열 초기화
문자 배열
- 배열을 이용한 진법 변환
- const 한정자
다차원 배열
가변 길이 배열
연습문제
Chapter 07 함수
함수 정의
인수와 지역 변수
- 함수 프로토타입 선언
- 자동 지역 변수
함수의 결과 반환
함수 사이의 호출
- 반환 형식과 인수 형식의 선언
- 인수 검사
하향식 프로그래밍
함수와 배열
- 할당 연산자
- 배열의 정렬
- 다차원 배열
전역 변수
자동 및 정적 변수
재귀 함수
연습문제
Chapter 08 구조체
구조체 기초
날짜 저장을 위한 구조체
- 식에서 구조체 사용하기
함수와 구조체
- 시간 저장을 위한 구조체
구조체 초기화
- 복합 상수
구조체 배열
구조체를 포함하는 구조체
배열을 포함하는 구조체
구조체의 변형
연습문제
Chapter 09 문자열
다시 보는 문자열의 기초
문자 배열
가변 길이 문자열
- 문자열의 초기화와 출력
- 두 문자열의 비교
- 문자열 입력
- 단일 문자 입력
- Null(널) 문자열
확장 문자
상수 문자열
문자열, 구조체, 배열
- 보다 나은 검색 방법
문자 연산
연습문제
Chapter 10 포인터
포인터와 간접 참조
포인터 변수 정의
식에서 포인터 사용하기
포인터와 구조체의 활용
- 포인터를 포함하는 구조체
- 연결 리스트
const 키워드와 포인터
포인터와 함수
포인터와 배열
- 프로그램 최적화에 대한 단상
- 포인터인가 배열인가?
- 포인터와 문자열
- 상수 문자열과 포인터
- 증가/감소 연산자
포인터 연산
함수 포인터
포인터와 메모리 주소
연습문제
Chapter 11 비트 연산
비트의 기초
비트 연산자
- 비트 단위 논리곱 연산자
- 비트 단위 논리합 연산자
- 비트 단위 배타적 논리합 연산자
- 1의 보수 연산자
- 왼쪽 이동 연산자
- 오른쪽 이동 연산자
- 이동 함수
- 비트 회전
비트 필드
연습문제
Chapter 12 전처리기
#define 문
- 프로그램 확장성
- 프로그램 이식성
- 고급 정의 방법
- # 연산자
- ## 연산자
#include 문
- 시스템 Include 파일
조건부 컴파일
- #ifdef, #endif, #else, #ifndef 문
- #if와 #elif 전처리 문
- #undef 문
연습문제
Chapter 13 열거형 데이터 형식, 형식 정의, 형식 변환을 통한 데이터 형식의 확장
열거형 데이터 형식
typedef 문
데이터 형식 변환
- 부호 확장
- 인수 변환
연습문제
Chapter 14 대규모 프로그램 작업
프로그램을 여러 개의 파일로 나누기
- 명령줄에서 여러 개의 소스 파일 컴파일하기
모듈 간 통신
- 외부 변수
- 정적 변수(Static) vs. 외부 변수(Extern) 그리고 함수
- 헤더 파일의 효과적 사용법
큰 프로그램을 작성하는 다른 도구들
- make 도구
- cvs 도구
- Unix 도구들: ar, grep, sed 등
Chapter 15 C 언어의 입·출력 연산
문자 입·출력: getchar(), putchar()
형식 입·출력: printf(), scanf()
- printf() 함수
- scanf() 함수
파일에서의 입·출력 연산
- 입·출력을 파일로 향하게 하는 방법
- 파일의 마지막(EOF)
파일에 사용하는 특별한 함수들
- fopen 함수
- getc(), putc() 함수
- fclose() 함수
- feof 함수
- fprintf(), fscanf() 함수
- fgets(), fputs() 함수
- stdin, stdout, stderr
- exit() 함수
파일 이름 변경과 삭제
연습문제
Chapter 16 여러 가지 고급 기능들
여러 가지 문장들
- goto 문
- null 문
공용체의 사용
콤마 연산자
형식 한정자
- register 한정자
- volatile 한정자
- restrict 한정자
명령줄 인수
동적 메모리 할당
- calloc(), malloc() 함수
- sizeof 연산자
- free 함수
연습문제
Chapter 17 디버깅
전처리기를 이용한 디버깅
gdb로 프로그램 디버깅
- 변수 다루기
- 소스 파일 보기
- 프로그램 실행 제어
- 스택 추적하기
- 함수 호출과 배열 및 구조체 설정하기
- gdb 명령으로 도움 받기
- 기타
Chapter 18 객체지향 프로그래밍
객체란 도대체 무엇인가?
인스턴스와 메소드
분수를 다루는 C 프로그램 작성
분수를 다루는 Objective-C 클래스 정의
분수를 다루는 C++ 클래스 정의
분수를 다루는 C# 클래스 정의
appendix A C 언어 요약
1.0 이중자와 식별자
1.1 이중자
1.2 식별자
2.0 주석
3.0 상수
3.1 정수 상수
3.2 실수 상수
3.3 문자 상수
3.4 문자열 상수
3.5 열거형 상수
4.0 데이터 형식과 선언
4.1 선언
4.2 기본 데이터 형식
4.3 파생 데이터 형식
4.4 열거형
4.5 typedef 문
4.6 const, volatile, restrict 한정자
5.0 수식
5.1 C 연산자 요약
5.2 상수 수식
5.3 산술 연산자
5.4 논리 연산자
5.5 관계 연산자
5.6 비트 단위 연산자
5.7 증가 및 감소 연산자
5.8 대입 연산자
5.9 조건부 연산자
5.10 데이터 형식 변환 연산자
5.11 sizeof 연산자
5.12 콤마 연산자
5.13 배열을 다루는 기본 연산자들
5.14 구조체를 다루는 기본 연산자들
5.15 포인터를 다루는 기본 연산자들
5.16 복합 리터럴
5.17 기본 데이터 형식의 변환
6.0 기억 영역 클래스와 범위
6.1 함수
6.2 변수
7.0 함수
7.1 함수 정의
7.2 함수 호출
7.3 함수 포인터
8.0 문장(statement)
8.1 복합문
8.2 break 문
8.3 continue 문
8.4 do 문
8.5 for 문
8.6 goto 문
8.7 if 문
8.8 null 문
8.9 return 문
8.10 switch 문
8.11 while 문
9.0 전처리기
9.1 삼중자(trigraph) 기법
9.2 전처리기 지시자
9.3 미리 정의된 식별자들
appendix B 표준 C 라이브러리
표준 헤더 파일들
- stddef.h
- limits.h
- stdbool.h
- float.h
- stdint.h
문자열 함수
메모리 함수
문자 함수
입·출력 함수
메모리에서 형식을 변환하는 함수
문자열을 숫자로 변환
동적 메모리 할당 함수
수학 함수
- 복소수 계산
범용 도구 함수들
appendix C gcc를 이용한 컴파일
일반적인 명령 형식
명령줄 선택사항
appendix D 자주 하는 프로그래밍 실수들
appendix E 참고자료
C 프로그래밍 언어
- 참고도서 추천
- 웹 사이트
- 뉴스그룹
C 컴파일러와 통합개발환경
- gcc
- MinGW
- CygWin
- Visual Studio
- CodeWarrior
- Code::Blocks
기타
- 객체지향 프로그래밍
- C++ 언어
- C# 언어
- Objective-C 언어
- 개발 도구들