티스토리 뷰

Test/C

정적 지역 함수

kiostory 2017. 8. 28. 22:52

#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

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함