본문
C 프로그래밍 오답노트 (애프터스킬)
지은이문찬승
쪽수224쪽
초판2018년 8월 25일
ISBN979-11-86886-87-8
판형188mm x 257mm (46배판)
기타애프터스킬 시리즈
- 책소개
- 목차
- 저자 소개
- 상세이미지
C 개발과정에서의 근본적인 질문에 대한 해답
"이 현상은 왜 일어날까?", "왜 느려지지?", "왜 값이 제대로 안 나와?"
실무 개발자라면 위와 같은 질문들은 필수라고 할만큼 당연한 '개선의 계기'가 되는데요.
본 책은 C 개발 과정에 있어 이러한 근본적인 질문들에 대한 도움이 될 만한 내용들을 담고 있습니다.
더불어 컴퓨터공학과 전공의 프로그램의 원리를 간략하게나마 정리하고 얼개를 다시 꿰는 데에 중점을 둔 본 책을 통하여,
1. 전공자들은 전공 지식을 다시 확인하는 차원에서,
2. 비전공자들은 컴퓨터 관련 이론을 어렵지 않게 이해하고,
3. 전공 학부생들이라면 "나중에 비로소 이해된다" 는 선배들 조언의 의미를 짧게나마 맛보았으면 합니다.
부디, 과도를 이용해서 소를 잡는 우를 범하지 않게 도와줄 작은 가이드가 되길 바랍니다.
머리말
이 책의 사용법
부록 다운로드
Chapter 1. 수와 연산
1.1 실수형 자료 사용의 위험성
01 실수형 자료의 저장 방식
02 부동소수점과 고정소수점의 비교
03 실수형 자료의 주의점
1.2 형 변환 시 주의점
1.3 무부호형(Unsigned Type) 사용 시 주의점
01 보수 표현법
02 무부호형 사용 시 문제점
1.4 비트 연산 시 주의점
01 이동(Shift) 연산
02 산술 이동(Arithmetic Shift)과 논리 이동(Logical Shift)
03 이동 연산의 장점과 주의점
1.5 변수의 범위
01 문자형의 overflow
02 실수형의 overflow
1.6 나눗셈의 주의 사항
01 0으로 나누기(Division by Zero)
02 0.0으로 나누기
1.7 증감 연산자 사용 시 주의 사항
01 일반 덧셈 연산 과정
02 증감 연산자
1.8 난수는 난수가 아니다
01 난수의 생성
02 난수표
03 난수의 활용
Chapter 2. 함수
2.1 함수의 반환값
01 인자를 통한 실행 정보의 입력
02 함수의 리턴값 재고
2.2 반환값을 활용하자
01 반환값 활용 예제
2.3 프로그램 수행 시 메모리의 구조
01 메모리 구조
02 변수의 종류
2.4 Call by Value vs Call by Reference
01 함수 인자의 전달 방법
02 피보나치(Fibonacci)
03 하노이(Fibonacci) 탑
2.5 x86 함수 호출 규약(비표준)
01 Cdecl(C declaration)
02 Stdcall
03 Fastcall
Chapter 3. 포인터
3.1 함수로의 인자 전달
3.2 배열과 포인터의 관계
01 배열의 구조
02 문자열
03 포인터와 배열의 차이
04 Strcpy( ) 함수
3.3 다차원 배열과 포인터
01 배열의 선형성
02 포인터 배열
3.4 함수 포인터
01 인자가 없는 함수 포인터
02 인자가 있는 함수 포인터
03 qsort( ) 함수
3.5 포인터 쉽게 사용하기
3.6 잘못된 포인터의 사용
01 허상 포인터(Darling Pointer)
02 와일드 포인터(Wild Pointer)
03 허상 포인터 방어
Chapter 4. 입출력(I/O)
4.1 컴퓨터의 I/O 처리 과정
4.2 컴퓨터 구동 환경에서 자료형의 기록 방식
01 엔디언(Endian)
02 개행 문자(한 줄 띄어쓰기)
4.3 여러 가지 입출력 환경
01 표준 입출력
02 통신 네트워크 I/O
4.4 텍스트 모드와 바이너리 모드
4.5 파일 입출력 프로그램 작성 시 자주하는 실수
4.6 파일 입출력 에러 핸들링 방법
4.7 I/O 성능 개선 방법
Chapter 5. 기타 프로그래밍 팁
5.1 반복문의 종류
01 반복문의 종류
02 반복문 사용 시 주의점
03 반복문의 성능 개선
04 goto 문 활용
5.2 매크로 사용 상의 주의점
01 매크로 사용 시 주의점
02 내장 매크로
5.3 if 문 사용 시 주의점
01 if 문의 조건식 판단 순서
02 if 문의 중첩
5.4 메모리 패딩(Padding)
01 패딩이란?
02 패딩을 사용하는 이유
5.5 디버깅 팁
01 debugbreak( ) 함수
부록
- 아스키코드 표
- 유니코드 한글모음
- 찾아보기
지은이 : 문찬승
‘1도 모르고’ 프로그래밍에 빠졌던 꼬꼬마. 조기 교육 덕에 유수 대회 수상 후 컴퓨터공학 전공. 병역특례 시절 시스템 프로그래밍/알고리즘과 첫 연을 맺고 이쪽 길에 본격 입성. 이후 데이터베이스 관리 시스템 개발 및 DAUM 검색엔진 개발을 거쳐, 지금은 카카오 모빌리티에서 내비게이션과 씨름 중. 어디 가서 ‘길도 모른단’ 소리 안 듣게 하려 부던히 노력 중인 경로검색 알고리즘 연구자.