더북(TheBook)

앞에 나온 today를 그림으로 표현하면 calArray와는 달리 박스 하나가 더 있음을 알 수 있다. 실제로 제대로 된 struct 타입이라면 추상화 단계가 하나 더 생긴다. 여기서 사용한 struct tm은 정식 C 타입이다.

이 구조체의 멤버에 접근하는 방법은 간단하다. 앞에서와 마찬가지로 닷(.) 표기법을 사용하면 된다.

 

yday.c

37   printf("this year is %d, next year will be %d\n",
38          today.tm_year+1900, today.tm_year+1900+1);

today.tm_year처럼, 멤버에 대한 레퍼런스를 표현식에서 사용하는 방법은 기본 타입으로 된 변수를 사용하는 방법과 같다.

struct tm에는 tm_wday, tm_yday, tm_isdst라는 세 멤버가 더 있는데, 초기자 리스트에서 언급하지 않았다. 이렇게 초기자에 명시하지 않으면 자동으로 0으로 설정된다.

TAKEAWAY 6.23 struct의 초기자에 명시하지 않은 멤버는 0으로 설정된다.

극단적인 경우로 여러 멤버 중 하나만 초기화될 수 있다.

TAKEAWAY 6.24 struct 초기자는 최소한 한 멤버를 초기화해야 한다.

모든 데이터 타입에 적용되는 디폴트 초기자인 {0}에 대해 설명한 적이 있다(TAKEAWAY 5.37).

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