C静态变量
2022/5/31 23:22:36
本文主要是介绍C静态变量,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
静态变量是指在内存中原地不动
局部静态变量
使用static关键字在某个块内声明一个变量。
#include<stdio.h> #include<stdlib.h> void fun(void); int main(void) { for(int i=0;i<3;i++) fun(); return 0; } void fun(void) { int a = 1; // 每执行一次函数就会执行一次 static int b = 1; // 局部静态变量,只有在这个函数内才可以访问 // 静态变量和外部变量在程序载入内存时就执行完毕,所以上面的语句在调用函数时会跳过 // 声明发在这里是指只有fun函数能访问。 printf("a = %d, b = %d\n", a,b); b++; }
外部连接的静态变量
外部连接的静态变量具有文件作用域、外部链接和静态存储期,也成为外部存储类别。该类别变量称为外部变量。
在所有函数外面创建外部变量。可以在函数内部使用extern关键字显示声明使用一个外部变量。
当外部变量定义在另一个源码文件中时必须使用extern
#include<stdio.h> int ex_var = 10; // 外部变量, 定义式声明 // 外部变量如果未初始化会被自动初始化未0 // 自动变量即块中或函数头的局部变量未初始化情况下不一定为0 // 外部变量的初始化必须使用常量表达式,只要不是变长数组sizeof表达式也视为常量表达式。 // int x=2; // int y = 2*x; // 这一行会报错,x是变量不能用变量初始化外部变量。 void fun(void); void fun2(void); int main(void) { extern int ex_var; // 引用式声明,关键字extern表明该声明不是定义编译器要到别处查询定义 for(int i=0;i<3;i++) { fun(); fun2(); } return 0; } void fun(void) { printf("fun1: %d\n", ex_var); ex_var++; } void fun2(void) { // auto 关键字显示的声明变量是一个自动变量也就是非静态自动变量。 auto int ex_var = 20; printf("fun2: %d\n", ex_var); ex_var++; }
内部链接的静态变量
使用static关键字在函数外部定义变量。具有静态存储期、文件作用域和内部链接。只能由同一文件内的函数使用。
#include<stdio.h> static int intern_var = 10; // 使用static关键字 void fun(void); int main(void) { for(int i=0;i<3;i++) { fun(); } } void fun(void) { printf("%d\n", intern_var); intern_var++; }
这篇关于C静态变量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升