더북(TheBook)

준비

여러모로 볼 때 C 언어는 제약이 없는 편이다. 다시 말해 프로그래머가 원한다면 자폭에 가까운 일도 할 수 있다. 언어 차원에서 이런 일들을 막지 않는 것이다. 먼저 몇 가지 제약 사항에 대해 알아보자. 아직은 총을 건넬 만한 수준에 이르지 않았으므로 당분간은 손이 닿지 않는 곳에 넣고 자물쇠를 단단히 채운 뒤 경고 문구를 붙여 두자.

C에서 가장 위험한 구문은 타입 변환(cast)C이다. 레벨 1에서는 이에 대한 설명은 생략한다. 이것 말고도 빠지기 쉬운 함정 몇 가지를 소개하는데, 좀 생소할 수 있다. 특히 C 언어를 90년대에 배웠거나 최신 ISO C로 업그레이드하지 않은 플랫폼에서만 작업했다면 더욱 그럴 것이다.

숙련된 C 프로그래머: C 프로그래밍 경험이 많다면 여기서 소개할 내용을 이해하는 데 시간이 좀 걸리거나 심하면 거부감이 들 수도 있다. 여기 나온 코드 중에서 어려운 부분이 나오면 잠시 마음을 진정시킨 뒤에 읽기 바란다.

초보 C 프로그래머: C 프로그래밍 경험이 적다면 지금부터 설명할 내용이 좀 어려울 수 있다. 가령 설명 과정에 모르는 용어가 나올 수도 있다. 따라가기 너무 힘들다 싶으면 3장부터 읽고 이 부분은 여유가 생길 때 다시 읽어도 좋다. 단, 레벨 1을 마치기 전에는 반드시 한 번 읽고 넘어가기 바란다.

이 레벨에서 받아들이기 힘든 내용 중 일부는 다음과 같이 일정한 순서에 따라 점진적으로 소개한다.

정수 타입은 부호 없는(unsigned)C 버전 위주로 소개한다.

포인터는 단계를 나눠서 소개한다. 먼저 함수 매개변수(6.1.4절)로 사용하는 방법과 이때의 (유효하거나 유효하지 않은) 상태에 대해 살펴보고(6.2절), 이후 레벨 2(11장)에서 자세히 소개한다.

레벨 1에서는 포인터를 주로 배열 사용 관점에서 살펴본다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.