C语言 存储类

存储类定义了变量的作用域和生命周期。C语言中有五种存储类:autoregisterstaticexterntypedef

auto 存储类

auto 是C语言中的默认存储类,用于局部变量。它表示变量的生存期仅限于定义它的代码块(即一对花括号 {} 之间)。一旦程序离开这个代码块,局部变量就会被销毁。尽管它是默认值,但通常不明确指定它,因为它是隐式的。

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

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

register 存储类

register 储存类建议编译器把变量存储到 CPU 寄存器中而不是内存中,这样可以加快访问速度。然而,现代编译器能够智能地决定哪些变量适合存储在寄存器中,因此使用 register 关键字并不常见。

static 存储类

static 存储类应用于局部变量时,使它们具有静态生存期,即使离开定义它们的代码块,它们仍然存在,并且其值保持不变。对于全局变量,static 关键字限制了它们的作用域,只允许在同一文件内访问。

静态局部变量

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

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

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

静态全局变量

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

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

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

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

extern 存储类

extern 存储类用于声明一个在其他文件或当前文件的外部位置定义的变量。当需要在多个文件中共享一个变量时,extern 关键字非常有用。

在一个文件中定义变量

在另一个文件中使用该变量

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

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

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

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

typedef 存储类

typedef 不是一种存储类,而是一个类型定义工具。它为现有的数据类型创建一个新的名称。这对于创建复杂的数据类型特别有用,例如结构体或者指针。

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

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

------- - - --

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

通过以上内容,我们了解了C语言中不同的存储类以及它们的应用场景。合理选择存储类可以帮助优化程序性能,同时确保正确的数据管理。

纠错
反馈
QR Code

微信搜一搜

搜索 JavaScript