위 코드에서의 number는 계속해서 전역변수입니다. 지역변수로 바뀌지 않습니다.
#include
int number = 0;
void order();
int main() {
order();
order();
order();
return 0;
}
void order() {
number = number + 1;
printf(`손님의 주문번호는 %d번입니다. `, number);
}
이 코드 값의 실행 결과 값이 아래와 같은데
-> 손님의 주문 번호는 1번입니다.
손님의 주문 번호는 2번입니다.
손님의 주문 번호는 3번입니다.
--------------------------------------------
손님의 주문 번호는 1번입니다.
손님의 주문 번호는 1번입니다.
손님의 주문 번호는 1번입니다.
-> 이렇게 나와야 하는거 아닌가요?
전역변수로 int number=0;을 초기화하고 main 함수에서 첫번째 order 함수를 만났을 때 손님의 주문 번호는 1번입니다. 가 출력 되고 그 다음에 order 함수에서 number는 지역변수니까 다시 메모리로 반환이 되어 2번째 order 함수를 만났을 때도 손님의 주문 번호는 1번입니다. 이렇게 나와야 하는거 아닌가요?
아니면 전역변수도 정적변수와 마찬가지로 초기화(int number=0) 는 한번만 되고 2번째 함수가 실행될 때 부터 int number=0 이라고 초기화 한걸 무시하고 함수 실행이 끝나더라도 사라지지 않고 살아남아서 손님의 주문 번호는 2번입니다. 가 출력 되는건가요?
(즉, 첫번째 order 함수에서는 number에 0이 들어가고 2번째 ordrer함수에서는 number=0;으로 초기화 한 걸 무시하고 첫번째 order 함수에 저장된 number의 값인 1을 가져오는 건가요?)
제 질문이 이해가 되실지 모르겠네요... 너무 길게 쓴 것 같은데 죄송해요.. 프로그래밍을 혼자 하려니 이해가 안 가는 부분이 있어 질문 올립니다! 답변 감사드려요~
※ 답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다.
위 코드에서의 number는 계속해서 전역변수입니다. 지역변수로 바뀌지 않습니다.