C 语言中 static 关键字的作用是什么?

推荐答案

在 C 语言中,static 关键字主要有以下三种作用:

  1. 局部变量:在函数内部声明的 static 变量,其生命周期延长至整个程序运行期间,但作用域仍限于该函数内。这意味着该变量在函数调用之间保持其值不变。

  2. 全局变量和函数:在全局变量或函数前使用 static 关键字,可以限制该变量或函数的作用域仅限于当前文件,避免与其他文件中的同名变量或函数冲突。

  3. 类成员变量(C++ 中):在 C++ 中,static 还可以用于类的成员变量和成员函数,表示该成员属于类本身,而不是类的某个实例。

本题详细解读

1. 局部变量中的 static

static 用于局部变量时,该变量的生命周期从函数调用结束延长到整个程序运行期间。这意味着即使函数调用结束,该变量的值也不会被销毁,下次调用该函数时,变量的值仍然是上次调用结束时的值。

-- -------------------- ---- -------
---- ------ -
    ------ --- ----- - --
    --------
    -------------- ------ -------
-

--- ------ -
    -------  -- --- ------ -
    -------  -- --- ------ -
    -------  -- --- ------ -
    ------ --
-

在上面的例子中,count 是一个静态局部变量,每次调用 func() 时,count 的值都会保留并递增。

2. 全局变量和函数中的 static

static 用于全局变量或函数时,它会限制该变量或函数的作用域仅限于当前文件。这意味着其他文件无法访问或使用该变量或函数。

-- -------------------- ---- -------
-- -------
------ --- --------- - ---

------ ---- ------------ -
    -------------- -------------
-

---- ------------ -
    -------------
    ------------------ ------ -----------
-
-- -------------------- ---- -------
-- -------
------ ---- -------------

--- ------ -
    -------------  -- ---- ----------
    -- -------------  -- --- ---------- ---
    -- -------------- -----------  -- --- --------- ---
    ------ --
-

在上面的例子中,globalVarhelperFunc 只能在 file1.c 中访问,而在 file2.c 中无法访问。

3. C++ 中的 static 类成员

在 C++ 中,static 还可以用于类的成员变量和成员函数。静态成员属于类本身,而不是类的某个实例。这意味着所有类的实例共享同一个静态成员。

-- -------------------- ---- -------
----- ------- -
-------
    ------ --- ----------
    ------ ---- ------------ -
        -------------- -------------
    -
--

--- ------------------ - --

--- ------ -
    ------------------ - ---
    ----------------------  -- --- ------ --------
    ------ --
-

在上面的例子中,staticVarstaticFunc 属于 MyClass 类本身,而不是某个具体的实例。

纠错
反馈