c-->static关键字的使用
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;
}
c-->static关键字的使用的更多相关文章
- 浅谈Static关键字
1.使用static关键字声明的属性为全局属性 未使用static关键字指定city之前,如果需要将Tom,Jack,Mary三人的城市均改成Beijing,需要再次声明三次对象的city为Beiji ...
- (转)Java中的static关键字解析
转载: http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: &q ...
- PHP的final关键字、static关键字、const关键字
在PHP5中新增加了final关键字,它可以加载类或类中方法前.但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的. final关键字 ...
- Java Static关键字详解
提起static关键字,相信大家绝对不会陌生,但是,想要完全说明白,猛的一想,发现自己好像又说不太明白... ...比方说,昨天被一个同学问起的时候... ... 当然,不是所有人都像我一样学艺不精的 ...
- 关于Java中的static关键字
Java中的 static 关键字,确实是一个关键的字(key word),今天就来总结一下它的用法,说说为什么关键. Java中的 static 关键字主要是用来做内存管理的.理解了这句话才能够比较 ...
- Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...
- c++中static关键字的用法总结
类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体中 ...
- static关键字
static关键字 static是静态修饰符,一般修饰成员.被static修饰的成员属于类,不属于单个这个类的某个对象. 1.static关键字的特点 a:随着类的加载而加载 b:优先于对象存在 (还 ...
- C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...
- (转)Java中的static关键字解析
转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...
随机推荐
- 为什么 TCP 建立连接需要三次握手(转载)
为什么 TCP 建立连接需要三次握手(转载) 原文链接:https://draveness.me/whys-the-design-tcp-three-way-handshake/ TCP 协议是我们几 ...
- 1888: 生成括号(等级考试3级 2021-09 T5)
题目: 程序: #include<bits/stdc++.h> using namespace std; int n; string s1; void dfs(int l,int r) { ...
- 线程基础知识12-AQS
转:https://tech.meituan.com/2019/12/05/aqs-theory-and-apply.html 1 简介 AQS,全称AbstractQueuedSynchronize ...
- .net core 从(本地)服务器获取APK文件并解析APK信息
1.apk解析除了使用客户端利用aapt.exe.unzip.exe开发客户端解析外,还可以直接利用服务进行解析 /// <summary> /// 从本地服务器获取APK文件并解析APK ...
- JZOJ 4744.同余
\(\text{Problem}\) \(\text{Solution}\) 考虑 \(60\) 分 设 \(f_{i,j,k}\) 表示前 \(i\) 个数,模 \(j\) 同余 \(k\) 的个数 ...
- Linux 下的十一款一流备份实用工具
转载:linux.中国 https://linux.cn/article-7183-1.html
- php pdo如何查询记录条数
转载php中文网:https://www.php.cn/php-ask-457710.html php pdo查询记录条数的方法:1.使用fetchAll函数查询,其语法如"$rows=$q ...
- VueRouter 报错:inject() can only be used inside setup() or functional components
单独创建的一个文件,封装了登录函数的业务逻辑,出现了一个警告,紧接着就是报错:说不能读取到路由的 push 函数.路由必须在组件里面使用,不能在 ts 或 js 文件中使用. 还要注意的点是,在使用路 ...
- Postgresql CTE解析
一.简介 WITH提供了一种方式来书写在一个大型查询中使用的辅助语句.这些语句通常被称为公共表表达式或CTE(Common Table Expressions),它们可以被看成是定义只在一个查询中存在 ...
- redis(13)持久化操作-AOF
AOF(Append Only File) 以日志的形式来记录每个写操作(增量保存),将 Redis 执行过的所有写指令记录下来 (读操作不记录), 只许追加文件但不可以改写文件,redis 启动之初 ...