c - C中不同类型的静态

标签 c variables

我知道 C 中有三种类型的静态减速:

1: Constant - 常量静态变量,ex: static const int i = 5;

2: Changable - 只是一个普通的静态变量,例如:static int hi = 10;

这是我的问题

静态还有另一种形式,它采用“代码”的形式。这是什么意思,您能举个例子吗?

谢谢!

编辑: 静态/常量变量是否存储在堆栈/堆中?

最佳答案

也许你在谈论一个static function

这是“静态”一词的具体用法,它与静态变量完全不同。

当您声明一个函数为“静态”时,这意味着它不能从另一个源文件链接。它通常用于使某些功能保持“私有(private)”。

[编辑] 请注意,理论上,仍然可以使用指针从另一个源文件访问函数代码,但这不是访问函数的正常方式(当然也不是最简单的方式)。感谢 Eric Postpischil 指出这一点。

不幸的是,在 C 标准中使用同一个词“静态”表示两种不同的意思,这取决于用于函数或变量。

[edit]:这是一个不同的问题,但无论如何:在静态变量的情况下,它们既不在堆中也不在堆栈中分配。它们是静态的,这意味着它们分配在静态空间中,由编译器在启动时直接分配。 Stack 用于内部函数变量,heap 用于 malloc()/free()。

关于c - C中不同类型的静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16284506/

相关文章:

MySql存储过程,如何用CONCAT插入多个变量

javascript - 如何在url中存储变量

sql-server - SSRS 中的动态字段名称

c++ - output objdump -t的输出中的 ".hidden"是什么意思?

c - 如何创建C项目?

C:两种不同的二分搜索实现,一种陷入死循环

javascript - 检查 JavaScript 中是否存在对象

c++ - 如何从 extern "C"函数访问类变量?

c - 关于使用 SIGKILL 的说明

c - 从链表 C 中获取最后一个元素