差异cl:C存储类差异(storage cles in c)

为什么我们使用static与指针数组,它的意义是什么?

7

AUTO(默认)静态外部& amp;寄存器是 C 中变量的 4 个修饰符。

autoC 变量的默认存储类(即不需要显式指定auto)。

static更改变量的生存期。(保留范围,无更改)。

这意味着,在运行时,操作系统NOT一旦函数(包含变量退出)从内存中删除变量,并在每次调用函数时初始化变量。

相反,静态变量仅在函数(包含它的函数被调用)第一次被初始化。然后它继续驻留在内存中,直到程序终止。换句话说,STATIC有效地在内存中创建了一个变量 GLOBAL,但只有本地访问。

您的静态存储取决于它们是否初始化为 0。

0 初始化的静态数据进入.BSS(由符号开始的块),

非 0 初始化数据进入.DATA

必须注意,虽然静态变量总是在内存中,但只能从本地范围(它们定义的函数)访问它们。

extern用于向编译器发出信号,表示 extern-definition 只是一个占位符,而实际定义在其他地方。将变量声明为 extern 将导致程序在声明的范围内不为变量保留任何内存。找到声明为 extern 的函数原型也很常见。

register向编译器发出信号,表示最好使用 CPU 寄存器(而不是 RAM)来存储此变量。当重复访问变量时(对于 ex:loop 计数器变量),用于提高性能。

2

我假设你说的是auto变量,你可能指的是函数中的局部变量。auto是默认值,这意味着当函数被调用时,变量在堆栈上分配,当函数返回时,变量被释放。static表示第一次调用函数时,变量被分配一次,并保持为程序的其余部分分配。这意味着:

int foo() {
    static int x = 0;
    return x++;
}
printf("%d\n", foo()); // Outputs 0
printf("%d\n", foo()); // Outputs 1
printf("%d\n", foo()); // Outputs 2

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(907)
大众cc英文名:获取 AWS区域的英文名称(names of the regions)
上一篇
十进制转换二进制c语言编程:C++-十进制到二进制转换(decimal binary conversion)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(14条)