반응형
[C/C++] 지역변수, 전역변수, 정적변수
지역변수 :
- 한 지역 안에서만 사용할 수 있는 변수
- 매개변수도 지역변수다
- 함수의 내부나, 중괄호 내부에서 동작한다.
- 그 지역을 벗어나면 메모리 공간에서 소멸된다.
- 초기화 하지 않으면 컴파일 에러가 나거나 쓰레기값이 저장된다.
전역변수 :
- 어느 지역에서나 사용할 수 있는 변수
- 전처리기 밑에 선언한다.
- 반드시 상수로 초기화해야 한다.
- 초기값을 지정하지 않으면 디폴트 값 0으로 자동 초기화 된다.
- 프로그램이 종료되면 메모리가 소멸된다.
정적변수 :
- 전역변수와 대부분 비슷한 특성을 가지고 있다.
- 초기화가 딱 한 번만 진행된다.
- 프로그램이 시작될 때 생성 및 초기화 된다.
- 프로그램이 종료되면 소멸된다.
- 함수의 매개변수로 사용할 수 없다.
- 정적 지역변수와 정적 전역변수로 나뉜다.
- 데이터 타입 앞에 static을 붙여 선언한다.
// 지역변수, 전역변수, 정적변수
#include <stdio.h>
int global = 10; // 전역 변수
static int staticGlobal = 0; // 정적 전역 변수
void TestFunction(int functionLocal)
{
// functionLocal은 지역 변수
static int staticLocal = 0; // 정적 지역 변수
printf("functionLocal : %d\n", functionLocal++); // 매개변수는 지역변수이다.
printf("GlobalA : %d\n", global++); // 전역변수 사용 가능
printf("staticLocal : %d\n", staticLocal++); // 정적 지역 변수는 값이 유지됨
printf("staticGlobal : %d\n", staticGlobal++); // 정적 전역 변수는 어디서든 사용 가능하다.
printf("-------------------------------\n");
}
int main()
{
{
// 지역 변수 (중괄호 밖에서 사용 불가)
// 이 지역이 끝나면 소멸 됨
int mainLocal = 5;
printf("mainLocal : %d\n", mainLocal); // 정적 전역 변수는 어디서든 사용 가능하다.
TestFunction(mainLocal);
}
TestFunction(0);
TestFunction(0);
TestFunction(0);
TestFunction(0);
TestFunction(0);
// 지역변수가 선언된 중괄호 외에 밖에서 사용 불가능.
//printf("mainLocal : %d", mainLocal);
return 0;
}
반응형
'Programming > C, C++' 카테고리의 다른 글
C++ 빙고 게임 만들기 (0) | 2022.12.08 |
---|---|
C++ 숫자 야구게임 만들기 (0) | 2022.12.07 |
C++ 배열의 여러가지 사용 방법 (0) | 2022.12.07 |
C++ Call By Value, Call By Reference, Call By Address (0) | 2022.12.07 |
C++ Up&Down (업앤다운) 게임 만들기 (0) | 2022.12.06 |