【C语言】关键字static的作用是什么

青旅半醒 2024-03-16 21:14 128阅读 0赞

在C语言中,static有以下几种用法:

1. 修饰变量:被static修饰的全局变量具有静态存储期,即从定义开始到程序结束都存在,但作用域仅限于当前文件(即不能被其他文件访问),可以避免不同文件中同名变量的命名冲突。被static修饰的局部变量具有静态生存期,即变量一直存在,而不是随着函数的调用结束而销毁,但作用域仅限于当前代码块。

  1. //static关键字修饰全局变量
  2. #include <stdio.h>
  3. static int count = 0; //定义静态变量
  4. void increment()
  5. {
  6. ++count;
  7. printf("count is %d\n", count);
  8. }
  9. //file2.c
  10. #include <stdio.h>
  11. extern void increment(); //声明increment函数
  12. int main()
  13. {
  14. increment(); //输出count is 1
  15. increment(); //输出count is 2
  16. increment(); //输出count is 3
  17. return 0;
  18. }

在该例子中,我们定义了一个静态变量count,该变量只能在file1.c文件内使用,无法在其他文件中访问。每次调用increment()函数时,count的值会自增并打印输出。

  1. //static关键字修饰局部变量
  2. #include <stdio.h>
  3. int main()
  4. {
  5. for (int i = 0; i < 3; i++)
  6. {
  7. static int j = 0;
  8. j++;
  9. printf("i = %d, j = %d\n", i, j);
  10. }
  11. return 0;
  12. }

在该例子中,我们定义了一个静态变量j,在每次循环时j的值会累加,并打印输出。由于j被定义为静态变量,所以其生命周期会持续到程序退出,每次循环都使用相同的变量j,而不是像非静态变量一样每次都创建一个新对象。

2. 修饰函数:被static修饰的函数具有静态链接属性,即只能在定义它的文件中访问。静态函数不会被其他文件所用,也就是它只能被本文件中的函数调用。

  1. #include <stdio.h>
  2. static void print()
  3. {
  4. printf("Hello, World!\n");
  5. }
  6. //file2.c
  7. #include <stdio.h>
  8. extern void print(); //声明print函数
  9. int main()
  10. {
  11. print(); //这里可以访问print函数
  12. return 0;
  13. }

3. 静态断言:是一个编译错误,用于在编译期间检查某个条件是否为真。

总之,在C语言中,static主要用于控制变量和函数的作用域和链接属性。

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C语言static关键字及其作用

    在C语言中,static关键字有着多种作用。它可以用于函数、变量以及代码块中,每种用法都有不同的含义和效果。本文将详细介绍static关键字在不同上下文中的作用,并提供相应的源

    相关 static关键字作用总结

    前言 之前讲到final关键字的作用是每次面试的时候我必问求职者的两个问题之一,另外一个问题就是文本会写到的static。final和static一样,都是一个小问题可以看到

    相关 C语言关键字static

    > 前言: 在 C 语言中,static 关键字不仅可以用来修饰变量,还可以用来修饰函数。在使用 static 关键字修饰变量时,我们称此变量为静态变量。静态变量的存储方式与全

    相关 C语言static关键字小结

    在C语言中,static关键字用于普通变量和函数,它用于定义一个静态的变量或函数。下面对于它们各自的特点进行一下小结: 静态全局变量 在函数外部定义的变量前加上关键字s