|
음... 어케 돌아가는지는 잘 모르지만,
변수 선언이나 변수 생성시의 값의 초기화등은 함수 밖에서 이루어질 수 있지만,
명령어등의 연산은 함수밖에서 돌아다닐 수 없습니다.
그런 관점에서...
p_part = &gizmo;
이 문장은 연산코드 아닌가요?
함수 밖에서(소속된 함수없이) printf("ghost");를 사용한 것과 동일한 현상이
나타나리라고 생각합니다만.. 변수 초기화야 컴파일시에 처리해 줄 수 있지만,
함수밖에 나돌아다니는 명령문들은 어디에 낑궈넣어주고, 언제 실행해야 할지
(즉 언제 호출되어 동작해야 할지) 전혀 알 수 없쟎습니까?
:
:
: #include <stdio.h>
:
: struct part{
: int number;
: char name[10];
: };
:
: struct part gizmo;
:
: //struct part *p_part = &gizmo; <1>:이경우엔
: 무리없이
: // 실행이 잘 됩니다.
:
: //struct part *p_part; <2>:이경우엔 실행이 안됩니다.
: //p_part = &gizmo; 정말 이해가 안가요.
:
: void main()
: {
: (*p_part).number=100;
: printf("%d\n",(*p_part).number);
: }
:
:
|