더북(TheBook)

6.1.2 배열 연산

배열 역시 일종의 오브젝트다. 단지 타입이 좀 다를 뿐이다.

TAKEAWAY 6.2 조건문에서 배열은 true로 평가된다.

이러한 진리값을 가지는 이유는 뒤에서 설명할 배열 퇴화(array decay) 연산 때문이다. 또한 배열은 다른 오브젝트처럼 평가할 수 없다는 특성도 있다.

TAKEAWAY 6.3 배열 오브젝트는 있지만 배열 값이란 것은 없다.

그래서 배열은 표 4-1에 나온 값 연산의 피연산자가 될 수 없고, 배열에 대한 산술식을 선언할 수 없다.

TAKEAWAY 6.4 배열끼리 비교할 수 없다.

또한 배열은 표 4-2에 나온 오브젝트 연산의 값 부분에 나올 수 없다. 오브젝트 연산자 중 대다수는 배열을 피연산자로 사용할 수 없다. 그 이유는 피연산자가 산술식이라고 가정하기 때문이거나 두 번째 값의 피연산자 역시 배열이어야 하기 때문이다.

TAKEAWAY 6.5 배열은 대입될 수 없다.

표 4-2를 보면 배열을 다루는 오브젝트 연산자는 네 개뿐이고, [] 연산자도 있다.1 배열 퇴화(array decay) 연산, 주소 연산자(&), sizeof 연산자에 대해서는 뒤에서 자세히 설명한다.

 

 


1 배열과 []의 실제 C 용어에 대한 이야기는 좀 복잡하다. 그래서 as-if 규칙(TAKEAWAY 5.8)을 적용해서 설명한다. 모든 C 프로그램은 마치 []가 배열 오브젝트에 직접 적용되는 것처럼 작동한다.

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