본문 바로가기
개발&코딩/C

[C] c의 정적변수와 외부변수

by 우동이 2020. 7. 25.
300x250

변수의 종류

  • 정적(static) 변수
  • 외부(extern) 변수

변수의 종류는 크게 두 가지로 나눌 수 있습니다.

이러한 분류가 필요한 이유는

변수의 영역의 차이에 따른 용도가 존재함과 동시에

함수간 데이터 전달이 더 원할해야 하기 때문입니다.

 


정적 변수 (Static Variable)

#include <stdio.h>
int *print_ex();
int main()
{
	int *count=0;
	count=print_ex();
	printf("외부함수 호출후 메인함수에서의 값 : %d\n", *count);
	return 0;
}
int *print_ex()
{
	static int sum=5;
	
	return &sum;
}
>>> 외부함수 호출후 메인함수에서의 값 : 5

위 코드는 정적 변수를 외부 함수에서 선언하여

해당 값을 포인터로 넘겨주는 코드입니다.

 

메인 함수에서는 정적 변수 sum의 주소를 참조하며

외부 함수에서는 선언한 값 그대로 출력이 됩니다.

 

즉 정적 변수는 함수가 호출/종료된 이후에도 계속 유지된다는 걸 알 수 있습니다.


외부 변수(extern variable)

#include <stdio.h>

void print_ex();
int a=10;
int main()
{
	printf("메인함수에서의 출력 : %d\n", a);
	print_ex();
	return 0;
}

void print_ex()
{
	printf("외부함수에서의 출력 : %d\n", a);
}
메인함수에서의 출력 : 10 
외부함수에서의 출력 : 10

외부 변수는 메인 함수는 물론 다른 함수들 바깥에 선언된 변수입니다.

즉 모든 함수들 간의 값이 공유됩니다.

 

물론 사용 시에는 함수의 값이 함부로 변경되지 않도록

안정성 적인 측면에서 고려해야 할 사항이 존재합니다.

 

외부 변수 a는 메인 함수에서 출력할 때나

다른 함수에서 값을 출력할 때나 지정된 값이 동일하게 출력됩니다.

300x250

댓글