C零散知识点汇总之static关键字
  qrJHiMhufrJ3 2023年11月02日 72 0


一、Static的作用:

c语言中,static既可以修饰变量(全局变量和局部变量),又可以修饰函数。static类型的变量称为静态变量,如果不初始化则编译器自动初始化为0

static的用法有两种:

       1、修饰全局变量 或 函数,用于限定该变量或函数作用域为本文件。(这种限定是针对编译器而言,运行时没有区别)。

       2、修饰局部变量,用于修改变量的生存周期,维持持久性

1. 局部静态变量

static修饰局部变量的时候,该变量的存储空间由栈变为静态区。变量的作用域仍然为局部的,但是离开作用域后,静态变量不会被销毁,而是仍然驻留在内存当中,直到程序结束。

如果将静态变量的指针传出后,在作用域之外仍然可以通过指针访问这个变量。再次调用函数的时候,这个静态变量仍然保持着上次时候的值。

2. 全局静态变量

全局静态变量也是储存在静态区,但是它的作用域仅为本文件。对于全局变量使用static,可以多个文件中使用相同名字的全局变量而不会发生名字冲突。

3. 静态函数

在函数定义前面加上static,限定该函数只在当前文件中可见。这样不同的文件可以使用相同名字的函数而不会发生混淆。

static j;

void fun1(void)
{
static int i = 0;
i++;
}

void fun2(void)
{
j = 0;
j++;
}

int main()
{
int k = 0;
for (k = 0; k < 10; k++) {
fun1();
fun2();
}

return 0;
}

    最后i = 10, j = 1。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  iyuah6QlwXb6   2023年11月12日   31   0   0 Systemjava
  c587woZguOp7   2023年11月12日   23   0   0 java
  c587woZguOp7   2023年11月12日   20   0   0 java
  4ozAyWrX6Sw9   2023年11月12日   28   0   0 javajar
qrJHiMhufrJ3