지역 변수 (Local Variable)
– 선언한 지역을 벗어나면 기억 공간에서 자동 소멸
– 지역은 { } 로 구분
#include <stdio.h>
int main()
{
int a = 30;
{
int a = 60;
printf(“1. a: %d\n”, a);
}
printf(“2. a: %d\n”, a);
return 0;
}
1. a: 60
2. a: 30
정적 변수 (Static Variable)
– 정적 변수 사용하면 영역을 벗어나도 메모리 공간에서 소멸하지 않음
– 값 또한 그대로 유지
– 일종의 한번 선언하고 나면 계속 유지되는 변수
– 초기화 하지 않으면 자동으로 0으로 초기화
#include <stdio.h>
void count()
{
static int c;
c = c + 1;
printf(“c: %d\n”, c);
}
void main()
{
count();
count();
count();
}
c: 1
c: 2
c: 3
함수를 하나의 영역으로 생각한다면 static을 사용하였기 때문에
최초 함수가 실행된 이후 ( c: 1 )
c의 값이 초기화( c = 0 )이 되지 않고 1씩 증가하는 것을 볼 수 있다.
extern(extern variable)
– 모듈 별 분할 컴파일에서 사용
– 소스 밖에서도 사용 가능한 변수
– 쉽게말해 소스1.c에서 extern으로 선언한 변수는 동일 솔루션(프로젝트)의 소스2.c에서도 사용 가능
#include <stdio.h>
int externVariable;
extern void function();
void main()
{
printf(“exVari: %d\n”, externVariable);
function();
printf(“exVari: %d\n”, externVariable);
}
exVari: 0
exVari: 100
소스1.c에서 externVariable을 선언하고 function에서 이 값은 100으로 저장.
이 후 소스2.c에서 해당 변수를 출력해보면 자동으로 0 초기화.
이는 static과 마찬가지로 선언 시 초기화 하지 않으면 자동 0으로 초기화된다.
또한 function() 함수 실행으로 변수 값이 100이 저장 되며
printf로 확인해보면 100 출력
컴파일 시 소스1.c와 소스2.c는 각각 소스1.o(object)와 소스2.o로 컴파일되고
이 두개의 object 파일을 링크하여 하나의 실행 파일(.exe)로 생성
'Language > C++' 카테고리의 다른 글
C++ Reference and friend (0) | 2018.12.28 |
---|---|
C++ 더블 포인터 정리 (0) | 2018.12.27 |
C4996 error in visual studio – Scanf Error (0) | 2018.12.27 |
C언어 malloc에 대하여 (0) | 2018.12.27 |
C++ 다양한 자료형을 입력받는 법 (0) | 2018.12.27 |