본문 바로 가기

로고

통합검색

이전 페이지 가기 공학계열 장윤경 교수님

답변완료 전역변수
  • 작성자 임*우 (s*******9)
  • 작성일 2024-09-01
  • 과목 프로그래밍
질문유형
강좌내용

#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을 가져오는 건가요?)

 

 

제 질문이 이해가 되실지 모르겠네요... 너무 길게 쓴 것 같은데 죄송해요.. 프로그래밍을 혼자 하려니 이해가 안 가는 부분이 있어 질문 올립니다! 답변 감사드려요~

※ 답변 완료된 질문과 답변은 수정 및 삭제가 불가합니다.

댓글 0

    • 장*경
    • 교수님

    위 코드에서의 number는 계속해서 전역변수입니다. 지역변수로 바뀌지 않습니다.

    • 2024-10-11
    • 2024-12-12 수정