두번째구조체가 정의되기도전에 첫번째 구조체 정의로 두번째 구조체멤버의 포인터변수 선언이 가능한이유가뭘까요?
큰모음
질문 제목 :아직 정의되지않은 구조체멤버로 포인터변수 선언이 가능한이유가뭘까요? 질문 요약 :그림에있는 7라인을 확인부탁드려요.질문 내용 :
안녕하세요? 구조체 공부중에.. 7라인이 가능한이유를 여쭙고자..;;
함수도 컴파일러에게 알려주기위해서 함수원형선언이 존재하는데..
어찌하여두번째구조체가 정의되기도전에 첫번째 구조체 정의로 두번째 구조체멤버의 포인터변수 선언이 가능한이유가뭘까요?
14라인경우는 이미 첫번째 구조체로 정의된 상태에서 다른구조체 멤버로 변수선언이 가능한건 납득하겠는데..;;
22번라인은 코딩하다만거라 신경안쓰셔두됩니다.^^;
-
한샘가온
답변감사드립니다.
{포인터 형식의 실제 생성되지 않는 동적 타입 에 서만 가능한이야기다.
즉 정적인 타입의 변수는 사용 할수 없다는 얘기이다.}
1번 .포인터 형식의 실제 생성되지않은 동적타입 :
컴파일타임에서 첫번째 구조체를 정의하는부분에서 두번째 구조체타입의 포인터변수를 선언하는것이
1번과 일치하는것같네요. 이경우 컴파일타임에서는 첫번째구조체 정의부분에선 2번째 구조체 정의를 아직
인식하지못하는 영역에 해당되니 \실제 생성되지않은 -
Sonya
전방 선언에 대해 찾아 보시기 바랍니다. c++에서 자주 언급되는 사항이긴 합니다만 c에서도 종종 써먹는 방법이니 이해하시는데는 무리가 없을 겁니다.
-
김자영
답변감사드립니다..
근데 아직 이해를 잘못하겠습니다.
해당 구조체가 정의된후에야 struct two_b 타입이 만들어지는것이 아닌가요?
제가지금 어떻게 생각을 하냐면요.
설계도가 만들어지지도않았는데 제품이 완성된것처럼 느껴집니다.
전방선언을 말씀하셨는데..이것은 함수를 컴파일러에게 미리 알려주기위한 함수원형선언과
비슷한 표현방식인가요?
결과적으로는 7라인이 정상인데.. 7라인에서는 struct two_b구조체를 가르키더라구요..
이