길벗·이지톡

도서 IT전문서/IT입문서 프로그래밍/오픈소스

C만이 가진 고유한 개념과 작성 기법을 배워

'더 완전한' C 프로그램을 작성할 수 있다!

  

C 언어는 50년 이상된 프로그래밍 언어이며, 처음 등장한 이후 컴퓨터, 전화기, 카메라, 냉장고, 자동차 등 프로그래밍 인터페이스를 가진 거의 모든 기기에서 사용되고 있다. 이처럼 C로 만든 프로그램이나 시스템은 어디서나 볼 수 있지만 제대로 된 C 관련 자료는 굉장히 드물다. ISO C 표준 공동 편집자인 저자는 최신 C 표준을 기반으로 C만이 가진 고유한 개념과 작성 기법을 소개하고, C 언어에서 특별히 가치 있게 눈여겨볼 부분을 주로 설명한다.

목차

레벨 0 만남

 

1장 들어가며

1.1 명령형 프로그래밍

1.2 컴파일하고 실행하기

1.3 요약

  

2장 프로그램의 핵심 구조

2.1 문법

2.2 선언

2.3 정의

2.4 문장

__2.4.1 반복

__2.4.2 함수 호출

__2.4.3 함수 리턴

2.5 요약

  

레벨 1 친숙

 

3장 결국은 제어

3.1 조건부 실행

3.2 반복문

3.3 다중 선택

3.4 요약

 

4장 계산 표현하기

4.1 산술

__4.1.1 +, -, *

__4.1.2 나눗셈과 나머지

4.2 오브젝트를 수정하는 연산자

4.3 불 연산

__4.3.1 비교 연산

__4.3.2 논리 연산

4.4 삼항 연산자와 조건 연산자

4.5 평가 순서

4.6 요약

 

5장 값과 데이터 

5.1 추상 상태 기계

__5.1.1 값

__5.1.2 타입

__5.1.3 바이너리 표현과 추상 상태 기계

__5.1.4 최적화

5.2 기본 타입

5.3 값 지정하기

__5.3.1 복소수 상수

5.4 암묵적 변환

5.5 초기자

5.6 이름 있는 상수

__5.6.1 읽기 전용 오브젝트

__5.6.2 열거형

__5.6.3 매크로

__5.6.4 복합 리터럴

5.7 바이너리 표현

__5.7.1 부호 없는 정수

__5.7.2 비트 집합과 비트 단위 연산자

__5.7.3 시프트 연산자

__5.7.4 불 값

__5.7.5 부호 있는 정수

__5.7.6 고정폭 정수 타입

__5.7.7 부동 소수점 데이터

5.8 요약

  

6장 파생 데이터 타입

6.1 배열

__6.1.1 배열 선언

__6.1.2 배열 연산

__6.1.3 배열 길이

__6.1.4 매개변수로 사용하는 배열

__6.1.5 스트링은 특별하다

6.2 불투명 타입으로 사용하는 포인터

6.3 구조체

6.4 타입 이름 새로 짓기: 타입 앨리어스

6.5 요약

  

7장 함수

7.1 간단한 함수

7.2 main은 특별하다

7.3 재귀호출

7.4 요약

 

8장 C 라이브러리 함수

8.1 C 라이브러리의 기본 속성과 제공 함수

__8.1.1 헤더

__8.1.2 인터페이스

__8.1.3 오류 검사

__8.1.4 경계값 검사 인터페이스

__8.1.5 프로그램 사전조건

8.2 수학 함수

8.3 입력, 출력, 파일 조작

__8.3.1 서식을 적용하지 않은 텍스트 출력

__8.3.2 파일과 스트림

__8.3.3 텍스트 IO

__8.3.4 서식 지정 출력

__8.3.5 서식 없는 텍스트 입력

8.4 스트링 처리와 변환

8.5 시간

8.6 런타임 환경 설정

8.7 프로그램 종료 및 어서션

8.8 요약

  

레벨 2 이해

 

9장 스타일

9.1 코드 서식

9.2 이름 짓기

9.3 요약

  

10장 구성과 문서화

10.1 인터페이스 문서화

10.2 구현

__10.2.1 매크로

__10.2.2 순수 함수

10.3 요약

  

11장 포인터

11.1 포인터 연산

__11.1.1 주소 연산자와 오브젝트 연산자

__11.1.2 포인더 덧셈

__11.1.3 포인터 뺄셈

__11.1.4 포인터 유효성

__11.1.5 널 포인터

11.2 포인터와 구조체

11.3 포인터와 배열

__11.3.1 배열과 포인터는 접근 방식이 서로 같다

__11.3.2 배열 매개변수와 포인터 매개변수는 서로 같다

11.4 함수 포인터

11.5 요약

  

12장 C 메모리 모델

12.1 균일 메모리 모델

12.2 유니온

12.3 메모리와 상태

12.4 불특정 오브젝트에 대한 포인터

12.5 명시적 변환

12.6 이펙티브 타입

12.7 정렬

12.8 요약

  

13장 스토리지

13.1 malloc과 친구들

__13.1.1 가변 크기 배열 예제의 완성 버전

__13.1.2 동적 할당 연산에 대한 일관성 보장하기

13.2 스토리지 기간, 수명, 가시성

__13.2.1 정적 스토리지 기간

__13.2.2 자동 스토리지 기간

13.3 보충 설명: 오브젝트를 정의하기 전에 사용하기

13.4 초기화

13.5 보충 설명: 머신 모델

13.6 요약

  

14장 고급 처리 과정과 IO

14.1 텍스트 처리

14.2 서식 지정 입력

14.3 확장 문자 집합

14.4 바이너리 스트림

14.5 에러 검사와 클린업

14.6 요약

  

레벨 3 숙달

 

15장 성능

15.1 인라인 함수

15.2 restrict 지정자 사용하기

15.3 측정과 인스펙션

15.4 요약

  

16장 함수 같은 매크로

16.1 함수 같은 매크로 작동 방식

16.2 인수 검사

16.3 호출 문맥에 접근하기

16.4 디폴트 인수

16.5 가변 길이 인수 리스트

__16.5.1 가변 인수 매크로

__16.5.2 참고: 가변 인수 함수

16.6 타입 독립 프로그래밍

16.7 요약

  

17장 다양한 제어 흐름

17.1 복잡한 예

17.2 순서 정하기

17.3 숏점프

17.4 함수

17.5 롱점프

17.6 시그널 핸들러

17.7 요약

  

18장 스레드

18.1 간단한 스레드 제어

18.2 경쟁 상태가 없는 초기화와 소멸

18.3 스레드 로컬 데이터

18.4 크리티컬 데이터와 크리티컬 섹션

18.5 상태 변수를 이용한 통신

18.6 복잡한 스레드 관리

18.7 요약

  

19장 아토믹 접근과 메모리 일관성

19.1 선행 관계

19.2 동기화를 지원하는 C 라이브러리 호출

19.3 순차적 일관성

19.4 그 밖의 일관성 모델

19.5 요약

  

TAKEAWAY

참고문헌

찾아보기

더보기접기

저자

ㆍ지은이 옌스 구스테트(Jens Gustedt)

지은이 소개
본 대학(University of Bonn)과 베를린 공과대학(Berlin Technical University)에서 수학을 전공했다. 과학 연구 경력의 대부분은 소프트웨어 개발과 관련이 있다. 처음에는 주로 C++를 다뤘지만 나중에는 C만 집중적으로 사용했다. 현재 ISO JTC1/SC22/WG14의 전문가(AFNOR)로 활동하고 있고, C 표준 문서인 ISO/IEC 9899:2018의 공동 에디터를 맡고 있다. C 프로그래밍을 주로 다루는 블로그도 활발히 운영하고 있다(https://gustedt.wordpress.com).

ㆍ옮긴이 남기혁

옮긴이 소개
고려대학교 컴퓨터학과에서 학부와 석사 과정을 마친 후 한국전자통신연구원에서 선임 연구원으로 재직하고 있으며, 현재 ㈜프리스티에서 네트워크 제어 및 검증 소프트웨어 개발 업무를 맡고 있다. 『GWT 구글 웹 툴킷』(2008), 『해킹 초보를 위한 USB 공격과 방어』(2011), 『자바 7의 새로운 기능』(2013), 『iOS 해킹과 보안 가이드』(2014), 『Neutron 오픈스택 네트워킹』(2015), 『실전 IoT 네트워크 프로그래밍』(2015), 『애플 워치 WatchKit 프로그래밍』(2015), 『현대 네트워크 기초 이론』(2016), 『도커 컨테이너』(2017), 『스마트 IoT 프로젝트』(2017), 『파이썬으로 배우는 인공지능』(2017), 『메이커를 위한 실전 모터 가이드』(2018), 『트러블 슈팅 도커』(2018), 『Go 마스터하기』(2018) 등을 번역했다.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.