PART 1 C 언어 기본
1장 프로그램 만들기
1.1 프로그램과 C 언어
1.2 컴파일러 사용법
1.2.1 소스 파일(source file) 작성
1.2.2 컴파일
1.2.3 실행
연습문제 / 정답 및 해설
2장 상수와 데이터 출력
2.1 C 프로그램의 기본 형태와 데이터 출력 방법
2.1.1 main 함수 구조
2.1.2 출력 함수(printf)의 사용법
2.1.3 printf 함수로 제어 문자 출력
2.1.4 printf 함수로 정수와 실수 출력
연습문제 / 정답 및 해설
2.2 상수와 데이터 표현 방법
2.2.1 정수 상수 표현법
2.2.2 실수 상수 표현법
2.2.3 문자와 문자열 상수 표현법
2.2.4 상수가 컴파일된 후의 비트 형태
2.2.5 정수형 상수가 컴파일된 후의 비트 형태
2.2.6 실수형 상수가 컴파일된 후의 비트 형태
연습문제 / 정답 및 해설
3장 변수와 데이터 입력
3.1 변수
3.1.1 변수 선언 방법
3.1.2 쓰레기값과 초기화
3.1.3 정수를 저장하는 자료형
3.1.4 unsigned 정수 자료형
3.1.5 실수 자료형
3.1.6 문자열 저장
3.1.7 const를 사용한 변수
3.1.8 예약어와 식별자
연습문제 / 정답 및 해설
3.2 데이터 입력
3.2.1 scanf 함수의 사용법
3.2.2 scanf 함수의 응용
3.2.3 문자와 문자열의 입력
연습문제 / 정답 및 해설
4장 연산자
4.1 산술, 관계, 논리 연산자
4.1.1 연산자와 피연산자
4.1.2 산술 연산자와 대입 연산자
4.1.3 나눗셈 연산자와 나머지 연산자
4.1.4 증감 연산자
4.1.5 관계 연산자
4.1.6 논리 연산자
4.1.7 연산의 결과값은 어떻게 되나요?
연습문제 / 정답 및 해설
4.2 비트 연산자와 그 외의 멋진 연산자
4.2.1 형변환 연산자
4.2.2 sizeof 연산자
4.2.3 복합대입 연산자
4.2.4 콤마 연산자
4.2.5 조건 연산자
4.2.6 비트 연산자
4.2.7 연산자 우선순위와 연산 방향
연습문제 / 정답 및 해설
도전 실전 예제
5장 선택문(if, switch~case)
5.1 if문
5.1.1 if문의 기본 형식
5.1.2 if ~ else문
5.1.3 if ~ else if ~ else문
연습문제 / 정답 및 해설
5.2 if문의 활용과 switch~case문
5.2.1 if문 중첩
5.2.2 if문을 중첩해서 쓰는 이유
5.2.3 else 결합 문제
5.2.4 switch ~ case문
연습문제 / 정답 및 해설
도전 실전 예제
6장 반복문
6.1 while, for, do~while
6.1.1 while문
6.1.2 for문
6.1.3 do ~ while문
연습문제 / 정답 및 해설
6.2 반복문 활용
6.2.1 중첩 반복문
6.2.2 break와 continue 분기문
연습문제 / 정답 및 해설
도전 실전 예제
7장 함수
7.1 함수의 작성과 사용
7.1.1 함수 정의
7.1.2 함수 호출과 반환
7.1.3 함수 선언
연습문제 / 정답 및 해설
7.2 여러 가지 함수 유형
7.2.1 매개변수가 없는 함수
7.2.2 반환값이 없는 함수
7.2.3 반환값과 매개변수가 모두 없는 함수
7.2.4 재귀호출 함수
7.2.5 재귀호출이 반복문과 다른 점은 무엇인가?
연습문제 / 정답 및 해설
도전 실전 예제
8장 배열
8.1 배열의 선언과 사용
8.1.1 배열 선언과 배열 요소 사용
8.1.2 배열 초기화
8.1.3 배열과 반복문
8.1.4 sizeof 연산자를 활용한 배열 처리
연습문제 / 정답 및 해설
8.2 문자를 저장하는 배열
8.2.1 char형 배열의 선언과 초기화
8.2.2 문자열 대입
8.2.3 문자열 전용 입출력 함수(gets, puts)
연습문제 / 정답 및 해설
도전 실전 예제
9장 포인터
9.1 포인터의 기본 개념
9.1.1 주소 연산자(&)
9.1.2 포인터와 간접참조 연산자(*)
9.1.3 여러 가지 포인터
9.1.4 const를 사용한 포인터
연습문제 / 정답 및 해설
9.2 포인터에 관한 궁금한 이야기
9.2.1 주소와 포인터의 차이
9.2.2 주소와 포인터의 크기
9.2.3 포인터의 대입 규칙
9.2.4 포인터가 필요한 이유
연습문제 / 정답 및 해설
도전 실전 예제
PART 11 C 언어 고급
10장 배열과 포인터
10.1 배열과 포인터의 관계
10.1.1 배열명의 정체
10.1.2 배열명으로 배열 요소 사용하기
10.1.3 배열명 역할을 하는 포인터
10.1.4 배열명과 포인터의 차이
10.1.5 포인터의 뺄셈과 관계 연산
연습문제 / 정답 및 해설
10.2 배열을 처리하는 함수
10.2.1 배열의 값을 출력하는 함수
10.2.2 배열 요소의 개수가 다른 배열도 출력하는 함수
10.2.3 배열에 값을 입력하는 함수
연습문제 / 정답 및 해설
도전 실전 예제
11장 문자
11.1 아스키 코드값과 문자 입출력 함수
11.1.1 문자 상수 구현 방법
11.1.2 아스키 코드
11.1.3 scanf 함수를 사용한 문자 입력
11.1.4 getchar 함수와 putchar 함수
연습문제 / 정답 및 해설
11.2 버퍼를 사용하는 입력 함수
11.2.1 scanf 함수가 문자를 입력하는 과정
11.2.2 scanf 함수 반환값 활용
11.2.3 getchar 함수를 사용한 문자열 입력
11.2.4 fflush 함수
연습문제 / 정답 및 해설
도전 실전 예제
12장 문자열
12.1 문자열과 포인터
12.1.1 문자열 상수 구현 방법
12.1.2 char 포인터로 문자열 사용
12.1.3 scanf 함수를 사용한 문자열 입력
12.1.4 gets 함수를 사용한 문자열 입력
12.1.5 fgets 함수를 사용한 문자열 입력
12.1.6 표준 입력 함수의 버퍼 공유 문제
12.1.7 문자열을 출력하는 puts, fputs 함수
연습문제 / 정답 및 해설
12.2 문자열 연산 함수
12.2.1 문자열을 대입하는 strcpy 함수
12.2.2 strcpy 함수 구현 방법
12.2.3 원하는 개수의 문자만을 복사하는 strncpy 함수
12.2.4 문자열 길이를 계산하는 strlen 함수
12.2.5 문자열을 붙이는 strcat, strncat 함수
12.2.6 문자열을 비교하는 strcmp, strncmp 함수
연습문제 / 정답 및 해설
도전 실전 예제
13장 변수의 영역과 데이터 공유
13.1 변수 사용 영역
13.1.1 지역 변수
13.1.2 블록 안에서 사용하는 지역 변수
13.1.3 전역 변수
13.1.4 정적 지역 변수
13.1.5 레지스터 변수
연습문제 / 정답 및 해설
13.2 함수의 데이터 공유 방법
13.2.1 값을 복사해서 전달하는 방법
13.2.2 주소를 전달하는 방법
13.2.3 주소를 반환하는 함수
연습문제 / 정답 및 해설
도전 실전 예제
14장 다차원 배열과 포인터 배열
14.1 2차원 배열
14.1.1 2차원 배열 선언과 요소 사용
14.1.2 2차원 배열 초기화
14.1.3 2차원 char 배열
14.1.4 2차원 char 배열 초기화
14.1.5 3차원 배열
연습문제 / 정답 및 해설
14.2 포인터 배열
14.2.1 포인터 배열 선언과 사용
14.2.2 2차원 배열처럼 활용하는 포인터 배열
연습문제 / 정답 및 해설
도전 실전 예제
15장 응용 포인터
15.1 2중 포인터와 배열 포인터
15.1.1 2중 포인터 개념
15.1.2 2중 포인터 활용 예 1
15.1.3 2중 포인터 활용 예 2
15.1.4 배열 요소의 주소와 배열의 주소
15.1.5 2차원 배열과 배열 포인터
15.1.6 2차원 배열의 요소를 참조하는 원리
연습문제 / 정답 및 해설
15.2 함수 포인터와 void 포인터
15.2.1 함수 포인터의 개념
15.2.2 함수 포인터의 활용
15.2.3 void 포인터
연습문제 / 정답 및 해설
도전 실전 예제
16장 메모리 동적 할당
16.1 동적 할당 함수
16.1.1 malloc, free 함수
16.1.2 동적 할당 영역을 배열처럼 쓰기
16.1.3 기타 동적 할당 함수
연습문제 / 정답 및 해설
16.2 동적 할당 저장 공간의 활용
16.2.1 동적 할당을 사용한 문자열 처리
16.2.2 동적 할당 영역에 저장한 문자열을 함수로 처리하는 예
16.2.3 main 함수의 명령행 인수 사용
16.2.4 명령행 인수를 사용한 문자열 입력 예
연습문제 / 정답 및 해설
도전 실전 예제
17장 사용자 정의 자료형
17.1 구조체
17.1.1 구조체 선언과 멤버 사용
17.1.2 다양한 구조체 멤버
17.1.3 구조체 변수의 초기화와 대입 연산
17.1.4 구조체 변수를 함수 매개변수에 사용하기
17.1.5 비트 필드 구조체
연습문제 / 정답 및 해설
17.2 구조체 활용, 공용체, 열거형
17.2.1 구조체 포인터와 -> 연산자
17.2.2 구조체 배열
17.2.3 구조체 배열을 처리하는 함수
17.2.4 자기 참조 구조체
17.2.5 공용체
17.2.6 열거형
17.2.7 typedef를 사용한 형 재정의
17.2.8 구조체, 공용체, 열거형을 사용한 프로그램
연습문제 / 정답 및 해설
도전 실전 예제
18장 파일 입출력
18.1 파일 개방과 입출력
18.1.1 파일 개방과 폐쇄
18.1.2 스트림 파일과 파일 포인터
18.1.3 문자 입력 함수 fgetc
18.1.4 문자 출력 함수 fputc
18.1.5 기본적으로 개방되는 표준 입출력 스트림 파일
18.1.6 텍스트 파일과 바이너리 파일
18.1.7 + 개방 모드, fseek, rewind, feof 함수
연습문제 / 정답 및 해설
18.2 다양한 파일 입출력 함수
18.2.1 한 줄씩 입출력하는 fgets와 fputs
18.2.2 다양한 형태로 입출력 하는 fscanf, fprintf
18.2.3 스트림 파일의 버퍼 공유 문제와 fflush 함수
18.2.4 fread와 fwrite 함수
연습문제 / 정답 및 해설
도전 실전 예제
19장 전처리와 분할 컴파일
19.1 전처리 지시자
19.1.1 파일을 포함하는 #include
19.1.2 매크로명을 만드는 #define
19.1.3 #define을 사용한 매크로 함수
19.1.4 이미 정의된 매크로
19.1.5 매크로 연산자 #과 ##
19.1.6 조건부 컴파일 지시자
19.1.7 #pragma 지시자
연습문제 / 정답 및 해설
19.2 분할 컴파일
19.2.1 분할 컴파일 방법
19.2.2 분할 컴파일에서 extern과 static의 용도
19.2.3 헤더 파일의 필요성과 중복 문제 해결 방법
연습문제 / 정답 및 해설
도전 실전 예제
부록
A. 아스키 코드표
B. 선택정렬 알고리즘
C. 날짜와 시간 함수, 난수 함수, 가변 인수 함수
D. C 표준 라이브러리 함수와 매크로
E. 실전 프로젝트