变量的作用域和生命周期

ops/2025/2/2 12:43:30/

一、根据变量的作用域不同,可分为 局部变量 和 全局变量

1. 作用域:变量起作用的范围(变量定义之后,在哪里可以访问变量)。

就近原则:当不同作用域里面有两个或者多个同名变量,那么遵循就近原则。

局部变量:定义在 函数 或者 块语句 里面的变量,在函数或语句内部,超出作用域就不能使用变量了。

全局变量: 定义在所有函数外部的变量,一般是当前代码文件的最上面,从定义开始,整个文件里面都可以使用。

全局变量会自动初始化为0。

2. 生命周期:变量何时创建,何时销毁。

局部变量:生命周期从 定义 开始,到 当前函数或代码块 结束

全局变量:生命周期从 程序运行 开始,到 程序关闭 结束

二、根据变量的生命周期不同,可分为 静态变量 和 动态变量

1. 自动(动态)变量(auto):由编译器自动回收变量的内存
auto int age = 0;/*自动(动态)变量*/
2. 静态变量(status):在程序运行期间,只初始化一次,不随作用域的结束而销毁,生命周期从创建开始到程序执行结束。如果没有戳静态变量进行初始化,那么和全局变量一样会自动初始化为0。
void fun(){static int cnt = 0;/*静态变量*/printf("cnt:%d\n",cnt++);
}int main(){fun();fun();return 0;
}

3. 寄存器变量(register):不能对寄存器变量取地址
int main(){register int i = 0; /*寄存器变量*/scanf("%d",&i);printf("i:%d\n",i);return 0;
}
[Warning] address requested for 'i', which is declared 'register' [-Wextra]
4. 外部存储变量(extern):全局变量默认就是extern的,如果不想让全局变量在别的文件中能够被访问,那么加上static关键字即可。
extern int num; /*外部变量,声明一下,使用别的文件中的num变量*/
5. 内部变量(static)

http://www.ppmy.cn/ops/155035.html

相关文章

【Qt】06-对话框

对话框 前言一、模态和非模态对话框1.1 概念1.2 模态对话框1.2.1 代码QAction类 1.2.2 模态对话框运行分析 1.3 非模态对话框1.3.1 代码局部变量和成员变量setAttribute 类 1.3.2 现象解释 二、标准对话框2.1 提示对话框 QMessageBox2.1.1 现象及解释 2.2 问题对话框2.2.1 现象…

【3】阿里面试题整理

[1]. ES架构,如何进行路由以及选主 路由:在Elasticsearch(ES)中,默认的路由算法是基于文档的_id。具体来说,Elasticsearch会对文档的_id进行哈希计算,然后对分片数量取模,以确定该文…

Flutter常用Widget小部件

小部件Widget是一个类,按照继承方式,分为无状态的StatelessWidget和有状态的StatefulWidget。 这里先创建一个简单的无状态的Text小部件。 Text文本Widget 文件:lib/app/app.dart。 import package:flutter/material.dart;class App exte…

使用 postman 测试思源笔记接口

思源笔记 API 权鉴 官方文档-中文:https://github.com/siyuan-note/siyuan/blob/master/API_zh_CN.md 权鉴相关介绍截图: 对应的xxx,在软件中查看 如上图:在每次发送 API 请求时,需要在 Header 中添加 以下键值对&a…

python学opencv|读取图像(四十五)增加掩模:使用cv2.bitwise_and()函数实现图像按位与运算

【1】引言 前序已经对使用cv2.bitwise_and()函数实现图像按位与运算进行了反复探究: python学opencv|读取图像(四十三)使用cv2.bitwise_and()函数实现图像按位与运算-CSDN博客 python学opencv|读取图像(四十四)原理…

C语言自定义数据类型详解(一)——结构体类型(上)

什么是自定义数据类型呢?顾名思义,就是我们用户自己定义和设置的类型。 在C语言中,我们的自定义数据类型一共有三种,它们分别是:结构体(struct),枚举(enum),联合(union)。接下来,我…

第四章 WAL 4.1 WAL文件

4.1 WAL文件 WAL文件用于存储WAL日志。本小节主要介绍WAL文件。 1、WAL文件大小 PG使用64位的无符号整型作为日志文件的寻址空间。如下所示: typedef uint64 XLogRecPtr;//日志寻址类型 static void PreallocXlogFiles(XLogRecPtr endptr)//预分配日志文件uint64 offset;…

机器学习之决策树(DecisionTree——C4.5)

在机器学习之决策树(DecisionTree——ID3)中我们提到,ID3无法处理是连续值或有缺失值的属性。而C4.5算法可以解决ID3算的上述局限性。 1、连续值属性的处理 对于数据集 D D D和连续值属性 A A A,假设连续值属性 A A A有 M M M个不…