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 ...
随机推荐
- Quartz.Net源码Example之Quartz.Examples.AspNetCore
Quartz.Examples.AspNetCore .NetCore的Web系统,后台主要执行多个触发器任务,前台展示所有触发器信息和正在执行的作业的相关信息,还可以通过访问health-UI来 ...
- immutable.js学习笔记(五)----- Set
一.Set 二.API (一)add:添加值 (二)delete:删除值 注意:删除后的Set是无序的 (三)clear:清空并返回新Set (四)union:N个set合并为一个set (五)int ...
- immutable.js 学习笔记(三)----- Map
一.Map Map在原生的js中对应的是Object这样的结构,它都是key-value的键值对,并且它是无序的 二. API (一) set:设定值 (二)delete:删除值 每做一次增删改查都会 ...
- ROS入门:服务
服务端实现一个加法,将结果反馈给客户端 客户端将要计算的和的两个数发给服务的. 1.自定义服务数据 创建一个srv文件:AddTwoInts.srv int64 a int64 b --- int64 ...
- ubuntu 20.04 远程桌面(win10 控制 Ubuntu 20.04)
转载csdn: https://blog.csdn.net/lucky7213/article/details/107008246/
- 系统提权之:Unix 提权
郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. 系统 ...
- css3自动滚动
<!DOCTYPE html> <html lang="en"><div class="wrap"> <ul clas ...
- vue浏览器全屏 非全屏切换 按esc退出全屏
methods: { // 全屏 点击按钮 allping(){ this.status = true; this.enterFullscreen(); ...
- 后台Mysql存储过程调用
https://blog.csdn.net/weixin_43695211/article/details/127883536
- flexible.js源码分析
(function flexible(window,document){ // 获取html的根元素 var docEl = document.documentElement; // dpr 物理像素 ...