static靜態局部變量

#include <stdio.h>
#include <stdlib.h>


//靜態局部變量static
int f(int a)
{
    int b = 0;//等價auto int b = 0;
    static int c = 3;
    b = b + 1;//b調用結束後,釋放,再次調用時還是0+1
    c = c + 1;//c是static局部變量,調用結束後並不釋放,保留上次調用結束後的值;所以c的值依次爲:3,3+1,4+1,5+1;
    return (a + b + c);
}
int main15()
{
    //auto int a, b;//等價int a,b;
    int a = 2;
    for (int i = 0; i < 3; i++)
        printf("%d\n", f(a));
    return 0;
}

//輸出1-5的階乘值,使用static靜態變量
int facf(int n)
{
    //利用static靜態局部變量,函數調用結束後不釋放,保存函數調用結束後的值
    static int f = 1;
    f = f*n;
    return f;
}

int main16()
{

    for (int i = 1; i <= 5; i++)
        printf("%d!=%d\n", i, facf(i));
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章