static 用法

1. 修飾變量

靜態全局變量

作用域僅限變量被定義的文件中,其他文件使用extern聲明也無法使用。

靜態局部變量

在函數體內部定義,就只能在這個函數裏使用。

你真的會用static嗎?看看下面這個程序的輸出結果是多少?

#include <stdio.h>

void fun_a();
void fun_b();

int main()
{
    int count = 3;

    while (count--)
    {
        fun_a();
        fun_b();
    }
    return 0;
}

void fun_a()
{
    static int i = 0;
    i++;
    printf("i : %d\n", i);
}

void fun_b()
{
    int j = 0;
    j++;
    printf("j : %d\n", j);
}

運行結果

i : 1
j : 1
i : 2
j : 1
i : 3
j : 1

講解

由於被static修飾的變量總是存在內存的靜態區,所以這個函數運行結束後該靜態變量的值還不會被銷燬,函數下次使用時仍然能用到這個值。

2. 修飾函數

函數前加static使得函數成爲靜態函數。
函數的作用域僅侷限於本文件(所以又稱內部函數)。
使用內部函數的好處是:不同的人編寫不同的函數時,不用擔心自己定義的函數是否會與其它文件中的函數同名。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章