본문 바로 가기

로고

학습 Q&A

강의 내용 궁금증! 교수님이 직접 답변 드립니다.

  • 홈
  • 교수소개
  • 공학계열
  • 장윤경 교수님
  • 학습 Q&A

Q&A 메뉴.png

※ 유의사항
강의에 나오지 않는 내용에 대한 풀이나 해설은 답변을 드릴 수가 없습니다.
학습과 무관한 내용 및 비방/욕설 등 게시판 성격과 무관한 내용은 사전 고지없이 삭제됩니다.
답변 완료된 게시글은 수정 및 삭제 불가합니다.

jokjjs0216_03.png

게시판 글보기
제목 답변완료 전역변수
질문유형 강좌내용 교수님 장윤경
과목 프로그래밍 강좌명
작성자 임*우 (s*******9) 등록일 2024-09-01 00:36

#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 수정