解析static关键字

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 解析static关键字

前言:

在C/C++学习时,我们把内存大概分为3个区域。

1、栈区

用来存放局部变量和形式参数。临时作用的变量都是在栈区。

栈区上变量的特点:进入作用域创建,出作用域自动销毁(将内存返回操作系统)

2、堆区

用于动态内存的分配。

malloc,calloc,realloc,free

3、静态区

用于全局变量,实际参数,静态变量

静态区变量的特点:创建好后,直到程序结束后才销毁。

引言:

static关键字修饰局部变量,全局变量,函数时有不同的作用。

一、修饰局部变量:

效果:使局部变量的生命周期变长,直到程序结束才销毁。

举例:

image.png

此时a是一个局部变量,原先局部变量的生命周期是进入作用域开始,出作用域就销毁。因此本题的输出结果就是全2,因为每次进入局部变量a的函数test里面,就需要重新创建一个,而出函数test()a就自动销毁。

image.png

效果:

而经过static修饰的局部变量,打印结果是2,3,4,5,6,7,8,9,10,11使得这个静态变量的生命周期增长,直到程序结束才结束。

底层原理:

本来一个局部变量是存储在栈区,而经过static修饰后的局部变量存储类型(位置)发生了改变,从栈区变化到了静态区

与全局变量的辨析:

经过static修饰后的局部变量生命周期增长了,但是作用域还是局部变量的作用域,这是跟全局变量的差别。生命周期变长,但作用域不变

二、修饰全局变量

全局变量具有外部链接属性,所以在其他源文件内部依然可以使用。

原理:

static修饰全局变量,改变了这个全局变量的连接属性,由外部链接属性变成了内部连接属性

这个静态变量只能在自己坐在的源文件内部使用,不能在其他的源文件内部使用了。

效果:

感觉是作用域变小了

三、修饰函数

效果跟修饰全局变量基本一样,也是改变了函数的链接属性

image.png

相关文章
|
8月前
|
架构师 安全 Java
资深架构师带你解析Synchronize关键字原理
众所周知 Synchronize 关键字是解决并发问题常用解决方案,有以下三种使用方式:
63 0
|
8月前
|
存储 Java 中间件
《吊打面试官系列》从源码全面解析 ThreadLocal 关键字的来龙去脉
《吊打面试官系列》从源码全面解析 ThreadLocal 关键字的来龙去脉
|
28天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
1月前
|
Java 程序员
面试官的加分题:super关键字全解析,轻松应对!
小米,29岁程序员,通过一个关于Animal和Dog类的故事,详细解析了Java中super关键字的多种用法,包括调用父类构造方法、访问父类成员变量及调用父类方法,帮助读者更好地理解和应用super,应对面试挑战。
46 3
|
1月前
|
安全 编译器 C++
C++ `noexcept` 关键字的深入解析
`noexcept` 关键字在 C++ 中用于指示函数不会抛出异常,有助于编译器优化和提高程序的可靠性。它可以减少代码大小、提高执行效率,并增强程序的稳定性和可预测性。`noexcept` 还可以影响函数重载和模板特化的决策。使用时需谨慎,确保函数确实不会抛出异常,否则可能导致程序崩溃。通过合理使用 `noexcept`,开发者可以编写出更高效、更可靠的 C++ 代码。
40 0
|
5月前
|
网络协议 Java 数据库连接
13 Java异常(异常过程解析、throw、throws、try-catch关键字)
13 Java异常(异常过程解析、throw、throws、try-catch关键字)
143 2
|
7月前
|
存储 Java 数据库
Static关键字在Java中的多种用途解析
Static关键字在Java中的多种用途解析
|
7月前
|
JavaScript 前端开发 开发者
JavaScript中的const关键字解析
JavaScript中的const关键字解析
|
6月前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
6月前
|
存储 Java 数据库
Static关键字在Java中的多种用途解析
Static关键字在Java中的多种用途解析

热门文章

最新文章

推荐镜像

更多