728x90
안녕하세요!
이번 글에서는 전역변수(Global Variable)에 대해서 알아보겠습니다.
전역변수(Global Variable)는 프로그램 전체에서 접근 가능한 변수로, 함수 외부에서 선언됩니다.
전역변수는 프로그램의 어느 곳에서나 값을 읽거나 변경할 수 있으며, 여러 함수 간에 데이터를 공유할 때 유용하게 사용됩니다.
전역변수의 특징
- 함수 외부에서 선언되므로 모든 함수에서 직접 접근할 수 있습니다.
- 함수 내부에서 선언된 지역변수와 달리 특정 함수에 속하지 않으며, 프로그램의 어느 곳에서나 사용할 수 있습니다.
메모리 할당
- 전역변수의 메모리 할당과 소멸은 프로그램의 시작과 끝에 따라 결정됩니다.
- 전역변수는 프로그램이 실행되기 전에 메모리에 할당되며, 프로그램 종료 시 메모리에서 해제됩니다.
- 메모리에 유지되는 동안 계속해서 값을 읽거나 변경할 수 있습니다.
메모리와 초기화
- 전역변수를 선언할 때 초기 값을 지정할 수도 있습니다.
- 초기화하지 않은 전역변수는 BSS에 의해 해당 데이터 타입의 기본 값으로 자동으로 초기화됩니다.
- 정적으로 초기화된 전역변수는 프로그램의 시작 시점에서 메모리에 할당되고, 초기 값을 가지게 됩니다.
- 동적으로 초기화된 전역변수는 프로그램이 실행되는 도중에 프로그래머에 의해 초기화되며, 해당 전역변수에 처음 접근될 때 초기화됩니다.
- 전역변수는 프로그램의 데이터 섹션 또는 전역 메모리 영역에 저장됩니다. 데이터 섹션은 프로그램의 코드와 함께 로드되는 메모리 영역으로, 전역변수와 정적변수(Static)가 할당됩니다.
전역변수의 사용
- 전역변수는 프로그램 전체에서 접근 가능하므로 여러 함수 간에 데이터를 공유할 때 유용합니다.
- 함수 간에 전달할 필요 없이 전역변수에 값을 할당하고 해당 값을 다른 함수에서 읽을 수 있습니다.
- 전역변수는 프로그램의 다양한 부분에서 공통적으로 사용되는 상수 값이나 설정 값을 저장하는 데 유용합니다.
아래는 전역변수를 사용한 간단한 예제입니다.
#include <iostream>
int globalVariable = 42; // 전역변수 초기화
void func()
{
std::cout << "전역변수의 값: " << globalVariable << std::endl;
}
int main()
{
func(); // 전역변수 값 출력
globalVariable = 24; // 전역변수 값 변경
func(); // 변경된 전역변수 값 출력
return 0;
}
- globalVariable은 main함수 밖에서 전역변수로 선언되었으며, func 함수에서 해당 전역변수의 값을 출력합니다.
- main 함수에서 전역변수의 값을 변경하고 다시 func 함수를 호출하여 변경된 값을 출력합니다.
- 전역변수는 함수 간에 값을 공유하므로, func 함수에서도 main 함수에서 변경한 값을 읽을 수 있습니다.
정리
- 전역변수는 프로그램 전체에서 접근 가능한 변수로, 예제처럼 함수 외부에서 선언됩니다.
- 전역변수는 프로그램이 실행되기 전에 메모리에 할당되며, 프로그램 종료 시 메모리에서 해제됩니다.
- 전역변수는 초기 값을 지정하여 선언할 수 있으며, 초기화하지 않은 경우 해당 데이터 타입의 기본 값으로 자동으로 초기화됩니다.
- 전역변수는 프로그램의 데이터 섹션에 저장되며, 해당 데이터 타입의 크기에 따라 메모리가 할당됩니다.
- 전역변수는 프로그램의 여러 부분에서 공통적으로 사용되는 데이터를 저장하고 공유하는 데 유용합니다.
이번 글에서는 전역변수에 대해서 알아보았습니다.
전역변수는 어디서나 접근이 가능하여 데이터를 읽고 쓰는데 유용하게 쓰이지만, 무분별한 사용은 프로그램의 구조를 망치기 때문에 프로그램의 구조에 따라 적절하게 사용하여야 합니다!
감사합니다!
728x90
'[C++] > 프로그래밍 기초' 카테고리의 다른 글
[C++] 프로그래밍 기초 : SOLID원칙 (30) | 2023.06.19 |
---|---|
[C++] 정적(Static)변수 (42) | 2023.06.16 |
[C++] 프로그래밍 기초 : 포인터 연산 (49) | 2023.06.12 |
[C++] 프로그래밍 기초 : 열거형 (33) | 2023.06.12 |
[C++] 프로그래밍 기초 : 함수 오버로딩과 함수 오버라이딩 차이 (24) | 2023.06.09 |