정적 지역 함수
#include <stdio.h>
int func(void);
int main(void)
{
int i, sum=0;
for(i=0;i<10;i++)
{
sum +=func();
}
printf("sum = %d",sum);
return 0;
}
int func(void)
{
int a=0; // 지역변수로 선언할때, func함수는 호출될때마다
// a=0에서 시작하고 ++한 값을 넘기므로, 1을 10번 출력하고, sum=10이 됨
a++;
printf("%d\n",a);
return a;
}
-------------------------------------
결과 :
1
1
1
1
1
1
1
1
1
1
sum = 10
반면 정적 지역함수(static)로 정의하면,
#include <stdio.h>
int func(void);
int main(void)
{
int i, sum=0;
for(i=0;i<10;i++)
{
sum +=func();
}
printf("sum = %d",sum);
return 0;
}
int func(void)
{
static int a=0; // 정적 지역변수로 선언할때, 리턴값 a는 지역함수 밖에서도 기억되고 a=0에서 10까지 증가하여 sum=55가 됨
a++;
printf("%d\n",a);
return a;
}
-------------------------------------
1
2
3
4
5
6
7
8
9
10
sum = 55