57. 전역 변수

질문) 프로그램의 모든 함수에서 접근할 수 있게 변수를 선언할 수 없나요? 대답) 함수 외부에 변수를 선언하면 전역 변수란다. 전역 변수는 모든 함수에서 접근할 수 있지. 그런데 프로그램 시작할 때 할당하고 끝날 때 해제한단다.

아시는 것처럼 C언어에서는 프로그램에서 관리할 데이터를 할당하고 관리하기 위해 변수에 관한 문법을 제공하고 있죠.

C언어에서는 프로그램의 모든 함수에서 접근할 수 있는 전역 변수와 선언한 블록에서만 접근할 수 있는 지역 변수가 있어요.
그리고 이 외에도 정적 변수와 상수화 변수를 제공하는데 이들에 관해 하나 하나 살펴봅시다.

전역 변수

C언어에서는 변수 선언을 특정 블록 내부가 아닌 외부에 선언한 변수를 전역 변수라 불러요.
전역 변수는 프로그램 시작할 때 할당하고 프로그램 끝날 때 해제하며 프로그램 전제 영역에서 접근할 수 있죠.

예를 들어 50명의 국어 성적을 관리하는 프로그램이 있다고 가정할게요.
그리고 프로그램에 성적을 추가, 삭제, 조회, 전체 보기 메뉴를 제공합시다.
아마도 이 프로그램에는 각 메뉴를 선택했을 때 수행하는 부분을 각각의 함수로 만드는 것이 효과적일 거예요.

이 때 10명의 국어 성적을 기억하는 변수를 어디에 선언하면 좋을까요?
여러가지 방법이 있겠지만 전역 변수로 선언하면 모든 함수에서 접근할 수 있어요.

추가 기능에서는 학생 번호를 입력하여 성적을 추가할 학생을 선택하겠죠.

그리고 학생 성적을 입력받아요.

학생 성적은 scores 배열에 기억할 것이므로 인덱스 연산을 사용할게요.
입력한 학생 번호에 1을 빼면 되겠네요.
그리고 인덱스 연산으로 참조한 원소에 성적을 대입하여 값을 설정해요.

이렇게 추가 기능을 작성하면 전체 보기 기능을 선택하더라도 그 값은 유지되어 원하는 결과를 얻을 수 있어요.

다음은 10 명의 국어 성적을 관리하는 프로그램이예요.
프로그래밍 작성에 관해서는 뒤에서 다시 다루지만 한 번 분석해 보시고 프로그램을 작성해 보세요.

◈ 10 명의 국어 성적을 관리하는 프로그램


[C언어 무료 동영상 강의] 57.전역변수 58. 지역변수 59. 정적변수 60. 상수화변수