char (*(*x[3])())[5]

puresupe의 이미지

C언어 공부하던중에.

char (*(*x[3])())[5]

char (*(*x())[])()

이 두 선언의 이해가 힘들어서요 :D

어떻게 접근해야하는거죠?

winner의 이미지

kaeri17의 이미지

TCPL찾아보면 자세히 나와 있습니다. 저 선언을 영어로 해석해 주는 프로그램도 recursive descending paser의 원리로 구현합니다.

일단 간단한 설명으로는

char (*(*x[3])())[5]
이건 x는 함수 포인터의 배열이고 포인터가 가리키는 함수는 char형 배열[5]를 리턴합니다.

char (*(*x())[])()
이건 x는 char형 함수포인터의 배열을 가리키는 포인터를 리턴하는 함수입니다.

사실 근데 이런것을 써본적은 거의 없는듯. 필요한 상황이라도 적절한 typedef를 통해 알아보기 쉽게 하는게 좋을듯 하네요