【笔记】static 在C语言中的用法

描述

 

 

当 `static` 关键字用于不同的上下文时,其含义和作用也会有所不同。下面是更多示例代码,展示了 `static` 在不同用法下的具体效果:

 

 

 

示例1:静态局部变量

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

#include void increment() {static int count = 0;count++;printf("Count: %d\n", count);}int main() {increment(); // 输出:Count: 1increment(); // 输出:Count: 2increment(); // 输出:Count: 3return 0;}

 

在这个示例中,`count` 是一个静态局部变量。它被声明为 `static`,意味着它在函数调用之间保持持久性,并且其初始值只在第一次函数调用时初始化。每次调用 `increment()` 函数时,`count` 的值递增并打印。

 

示例2:静态全局变量

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

#include static int globalVar = 10;void function() {printf("Global variable: %d\n", globalVar);}int main() {function(); // 输出:Global variable: 10return 0;}

在这个示例中,`globalVar` 是一个静态全局变量。它被声明为 `static`,意味着它的作用域仅限于当前文件,并且无法被其他文件访问。在 `function()` 函数中,可以直接访问和使用静态全局变量。

 

示例3:静态函数

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

#include static void staticFunction() {printf("Static function\n");}int main() {staticFunction(); // 输出:Static functionreturn 0;}

在这个示例中,`staticFunction()` 是一个静态函数。它被声明为 `static`,意味着它的作用域仅限于当前文件,无法被其他文件调用。

 

 


 

示例4:静态结构体成员

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

#include struct MyStruct {int x;static int y;};int main() {struct MyStruct obj;obj.x = 5;obj.y = 10; // 错误:无法在结构体中使用静态成员return 0;}

 

在这个示例中,`MyStruct` 结构体中的 `y` 成员被声明为静态。然而,C语言不允许在结构体中使用静态成员。
 

 

示例5:静态局部数组

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

#include void printArray() {static int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");}int main() {printArray(); // 输出:1 2 3 4 5printArray();// 输出:1 2 3 4 5return 0;}

在这个示例中,`arr` 是一个静态局部数组。它被声明为 `static`,意味着它在函数调用之间保持持久性,并且其初始值只在第一次函数调用时初始化。每次调用 `printArray()` 函数时,都会打印相同的数组内容。
 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分