c-->static关键字的使用
2024-10-21 11:45:48
static关键字的使用
static:静态
未使用static
在下列代码中变量a是有生命周期的,调用完后就会被销毁
所以for循环每次调用test函数打印的结果都是2
#include <stdio.h>
void test()
{
int a = 1;
a++;
printf("%d", a);
}
int main(){
for (int i = 0; i < 10; i++)
{
test();//打印结果2222222222
}
return 0;
}
使用static
在下列代码中变量a是有生命周期的,调用完后就会被销毁
在使用了static关键字后,变量的生命周期被改变了生命周期等于程序的生命周期(本质是改变了变量的存储位置,由原来的栈区改为了静态区,全局变量也是存储在静态区)
所以for循环每次调用test函数打印的结果都会+1
#include <stdio.h>
void test()
{
static int a = 1;
a++;//a=2
printf("%d", a);
}
int main(){
for (int i = 0; i < 10; i++)
{
test();//打印结果2,3,4,5,6,7,8,9,10,11
}
return 0;
}
有static关键词与extern关键词交互的情况
static修饰全局变量,使得这个全局变量只能在自己所在的源文件(.c)内部才可以使用,其他源文件不能使用*
全局变量能过被其他源文件内部使用,是因为全局变量具有外部链接属性
但是被static关键字修饰后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量
函数也是一样的情况
add.c
static int year = 2022;//声明全局变量
test.c(运行报错)
#include <stdio.h>
extern int year;//使用extern关键字从add.c源文件中声明外部符号的全局变量
int main(){
printf("%d", year);//会报错
return 0;
}
最新文章
- Cmder--Windows下命令行利器
- C#中as用法
- jquery radio取值,checkbox取值,select取值及选中
- PHP 开发社区微信服务号实战图解
- Memcache的安装
- .Net连接到SAP【转载】
- iOS定位 - 普通定位(没有地图) - 反地理编码(得到具体位置)
- 创建高安全性PHP网站的几个实用要点
- Java在mysql插入数据的时候的乱码问题解决
- Linux系统编程(15)——shell脚本语法
- mysql报错ERROR 2003 (HY000): Can&#39;t connect to MySQL server on &#39;localhost&#39; (10061)
- 虚函数表:QT5与VS2015的差异
- Python学习基本小练习
- crm开发之用户重置密码
- 20165230 2017-2018-2《Java程序设计》课程总结
- Asp.net中的web.config配置
- JavaScript实现大整数减法
- oracle同义词语句备份
- CSS 图像拼合技术
- 系列文章--一步一步学Silverlight2
热门文章
- Java入门与进阶P-3.7+P-3.8
- TamperMonkey油猴脚本获取
- Python标准库pathlib及实例操作
- IDEA创建新的模块springboot
- MySQL数据库报1055错误
- .net core 阿里云接口之将指定的OSS文件下载到流
- Eureka、Consul、Zookeeper注册中心总结
- dotnet 缓存
- TCP/IP协议(7): NAT(Network Address Translation) —— 解决 IPv4 地址短缺的问题
- Blue Mary开公司