Logo
Overview
The C Programming Language

The C Programming Language

br0nzu br0nzu
February 3, 2026
2 min read

이번 포스팅은 The C Programming Language에 대해 리뷰해보겠습니다. The C Programming Language은 길기 때문에, TCPL이라고 줄여서 부르도록 하겠습니다.

Motivation

TCPL은 C 언어의 바이블로 자주 언급되는 책이고, 무엇보다 C를 만든 저자가 직접 집필했다는 점이 가장 끌렸습니다. 이미 C를 어느 정도 알고는 있지만, 이번 기회에 저자의 관점에서 C의 기본기와 철학을 정리해보고 싶어 TCPL을 선택했습니다.

The C Programming Language

목차별로 느낀 점을 짧게 정리하겠습니다.

01. A Tutorial Introduction

  • C = Function + Variable
  • C에서 모든 함수 인수는 값으로 전달 ⇒ Call by Value

02. Types, Operators and Expressions

  • 연산을 통한 자동 형변환이 일어날 수 있는데, 자동 형변환의 원칙은 정보 손실 없이 더 작은 피연산자를 더 넓은 피연산자로 변환하는 것

03. Control Flow

  • goto문은 깊게 중첩된 구조에서 처리를 포기하고 빠져나가거나, 에러를 한번에 처리할 때 유용하다.
  • 하지만 goto에 의존하는 코드는 보통 이해/유지보수가 더 어렵고, goto를 쓰는 코드는 항상 goto 없이도 쓸 수 있기 때문에 아예 안쓰는걸 추천

04. Functions and Program Structure

  • 정적 변수는 static 키워드가 붙은 변수로, 함수 안에서는 전역 변수와 같은 기능이 있고, 함수 밖에서는 캡슐화(파일 전용) 같은 기능이 있다.

05. Pointers and Arrays

  • C에서 a[i]는 정의상 *(a + i)와 같다. → a[i] == *(a+i)
  • Pointers and Arrays 장은 매우 중요하고, 이해하는데 시간이 가장 많이 걸렸다.

06. Structures

  • 구조체는 비교 연산을 하려면 멤버별로 비교해야 하고, 산술 연산을 할 수 없다.
  • 비트 필드(Bit-fields)는 하나의 워드(word) 안에 여러 객체를 넣어야 할 때 사용 → 워드 내 특정 영역을 직접 정의하고 접근(플래그)

07. Input and Output

  • 입출력, 파일 접근, 기타 기능 등 소개

08. The UNIX System Interface

  • UNIX 시스템과 C 언어 상호작용(syscall) 소개

Appendix

  • A: ANSI C 레퍼런스 소개
  • B: 라이브러리(헤더 파일) 소개

Conclusion

TCPL은 C 언어 문법을 학습하려고 보는 것 보다 C 언어를 만든 사람의 관점을 보기위한 책 입니다. ANSI C로 작성되어서 지금의 C 언어와는 문법이 살짝 다를 수 있지만, 예제와 연습 문제를 꼭 다 해보셔서 C 언어 창시자의 관점을 가져가면 좋을 것 같습니다.

References

[1] The C Programming Language