전역변수 질문입니다.
창의적
질문 제목 : 질문 내용 :
#include stdio.h
int val=0;
void fct(void);
int main(void)
{
val=10;
printf(val: %d \n ,val);
fct();
printf(val: %d \n ,val);
return 0;
}
void fct(void)
{
int val=20;
val++;
}
이 코드에서요 설명을 보니까는(열혈강의) 이프로그램의 결론이
지역 내에서는 지역변수가 전역변수보다 우선시된다 이건데
이말대로라면 두번째 printf문에서 출력되는 val 값이 21이 되야되는거아닌가요?
출력결과는 10,10 입니다.;;
오타도 아니고; 출력결과가 이해가안가네요;
코드가 오타인가요 -ㅁ-????
-
해련
까시// 도움말씀 감사합니다~
-
두힘
fct 에서 선언된 val 은.. 처음에 선언된 int val=0 의 val 과 같은 변수가 아닙니다. 알고 계시죠 ?
fct 에서 선언된 val 은.. 지역변수로써 그 지역(fct함수 내부) 에서만 유효합니다.
따라서 fct 가 종료되면서 그 안에서 선언된 val 은 사라지게 됩니다. -
간지포텐
락/// 물론이죠 ㅋㅋ 도움말씀 감사합니다~
-
누림
아;;; 넵.. val은 선언 안 해줘도 무방합니다. 하지만 그 문제에서 말하고자하는 바는.......아시죠?
-
초롱꽃
제가 이해력이 부족해서리...좀더 자세하게 설명해주실래요?
-
터큰
전호은,락//그럼 굳이 fct 함수에서 val을 선언안해줘도 무방한가요??
-
에드문드
오타 아니구요.. 10 10 맞습니다. 왜냐하면 fct()에 실행하면서 메모리 영역에 있다가 그 함수가 끝나자마자 메모리 영역에서 사라지죠. 그래서 두번째 printf문에서 영향을 받지 않습니다.
-
반월
10,10 이 맞아요.
fct내의 int val은 fct를 빠져나가면서 소멸됩니다.