Search
moon
sun

변수의 사용 범위

Created
2021/11/18 08:53
Tags
•
선언에 따른 구분
◦
지역 변수 local variable
함수 안에 선언
◦
전역 변수 global variable
함수 밖에 선언
◦
정적 변수 static variable
static 키워드와 함께 함수 안과 밖에 선언
static 데이터형 변수명;
•
사용 범위 구분
◦
지역 변수
함수 안에서만 사용 가능
◦
전역 변수
프로젝트 전체에서 사용 가능
전역변수가 선언된 파일 안에서 모두 사용할 수 있다.
◦
정적 변수
선언된 함수 안과 해당 파일에서만 사용 가능
함수 안에서는 지역변수의 성향이 있지만 종료는 프로그램이 종료될때 같이 종료 된다.
•
사용 범위에 따른 예 : 지역변수
함수 안에서만 사용
#include <stdio.h> void func(int var1){ int var2 = 10; printf("%p %p\n", &var1, &var2); } int main(void){ int var1 = 30; func(var1); printf("%p\n", &var1); return 0; }
C
복사
•
사용 범위에 따른 분류 예 : 전역 변수
함수 밖에 선언된 변수로 주로 상단에 위치
#include <stdio.h> #include <stdlib.h> int g_var; // 기본적으로 0으로 초기화가 된다 void func(){ g_var++; } int main(void){ printf("%d\n", g_var); func(); printf("%d\n", g_var); return 0; }
C
복사
•
사용 범위에 따른 분류 예 : 정적 변수(1)
◦
함수 밖에 선언되며 전역변수와 동일한 기능
단, 선언된 파일 안에서만 전역적으로 사용
// 함수 밖에 선언된 경우 #include <stdio.h> #include <stdlib.h> static int g_var; // 0으로 초기값이 설정이된다. void func(){ g_var++; } int main(void){ printf("%d ", g_var); func(); printf("%d ",g_var); return 0; }
C
복사
•
사용 범위에 따른 분류 예 : 정적 변수(2)
◦
함수 안에서 사용될 때는 프로그램이 종결될 때까지 값 유지
// 함수 안에서 사용될 경우 #include <stdio.h> #include <stdlib.h> void func(){ static int var; printf("%d\n", var++); } int main(void){ func(); func(); func(); func(); return 0; }
C
복사

사용 범위에 따른 변수

Search
생성과 소멸 시기
구분
생성 시기
소멸 시기
프로그램 실행
프로그램 종료
함수 호출 또는 프로그램 실행
프로그램 종료
COUNT3
•
초기값
◦
지역 변수 : 이전 메모리에 남아 있던 임의의 값으로 초기화
◦
전역 변수 : 0
◦
정적 변수 : 0
•
초기값 확인
#include <stdio.h> #include <stdlib.h> int g_globalvar; static int g_staticglobalvar; int main(void){ static int staticvar; int var; printf("%d %d %d %d\n", g_globalvar, g_staticglobalvar, staticvar, var); return 0; }
C
복사