当前位置: 首页 > news >正文

C++学习笔记之变量作用域

C++学习笔记之变量作用域

https://www.runoob.com/cplusplus/cpp-variable-scope.html

在C++程序中,通常有 3 个地方可以声明变量

  • 在函数或者代码块当中,为局部变量
  • 在函数的参数定义中,为形式参数
  • 在所有函数的外部,为全局变量

作用域在各种编程语言中都是很重要的概念,表示的是变量有效可用的范围,而常见的作用域可分为以下 4 种:

  • 局部作用域
    在函数内部声明的变量具有局部作用域,只能在函数内部访问局部变量在函数每次被调用时创建,在函数调用结束销毁
  • 全局作用域
    在所有代码块和函数之外声明的变量具有全局作用域,可以被程序中的任何函数访问,全局变量在程序开始的时候创建,在程序结束时被销毁
  • 块作用域
    在代码块内部声明的变量具有块作用域,只能在代码块内部被访问,在代码块被执行时被创建,在代码块执行结束后被销毁
  • 类作用域
    在类内部声明的变量具有类作用域,可以被类中的所有成员函数访问,类作用域变量的生命周期与类的生命周期相同

变量声明重名时,内部作用域声明的变量的会覆盖外部作用域的

1、局部变量

在函数或代码块内部声明的变量,称为局部变量,只能够被函数内部代码或者代码块内部的代码使用

void doSomething()
{                // 局部作用域int temp;    // 声明局部变量temp = 100;
}

2、全局变量

在所有函数外部定义的变量,称为全局变量全局变量在程序整个生命周期内都是有效的
因此,全局变量可以被任何函数访问,一旦声明为全局变量,在整个程序中都可用

#include <iostream>
using namespace std;// 声明为全局变量
int global = 20;void doSomething()
{int temp;temp = 100;cout << "doSomething" << global << endl;    // 在函数内部使用
}int main() {doSomething();cout << "main" << global << endl;     // 整个程序内全局变量都有效return 0;
}

局部变量的名称可以与全局变量名称相同,但是在函数当中时,遵循**“就近原则”**,因此局部变量的值会覆盖全局变量的值

#include <iostream>
using namespace std;int global = 20;void doSomething()
{int temp;temp = 100;global = 200;   // 局部作用域内覆盖全局变量cout << "doSomething" << global << endl;
}int main() {doSomething();cout << "main" << global << endl; return 0;
}

3、初始化局部变量和全局变量

当局部变量被定义时,系统不会对其进行初始化,因此需要自行进行变量的初始化
而在定义全局变量时,系统会自动初始化为以下初始值:

数据类型初始值
int0
char‘\0’
float0
double0
指针NULL

4、类作用域

类作用域指的是在类内部声明的变量:

class Test
{
public:static string version;     // 类作用域变量
};string Test::version = "1.0";    // 采用::进行变量访问int main() {cout << "version=" << Test::version << endl;return 0;
}

相关文章:

C++学习笔记之变量作用域

C学习笔记之变量作用域 https://www.runoob.com/cplusplus/cpp-variable-scope.html 在C程序中&#xff0c;通常有 3 个地方可以声明变量 在函数或者代码块当中&#xff0c;为局部变量在函数的参数定义中&#xff0c;为形式参数在所有函数的外部&#xff0c;为全局变量 作用域…...

解决跨境电商平台账号无法访问的常见问题

跨境电商的迅猛发展&#xff0c;越来越多的卖家选择在全球各大电商平台如亚马逊、eBay等进行商品销售。然而&#xff0c;在实际运营过程中&#xff0c;卖家经常会遇到账号无法访问、应用打不开等问题&#xff0c;导致业务受阻。本文将针对这些问题进行详细分析&#xff0c;并提…...

P2847 [USACO16DEC] Moocast G

P2847 [USACO16DEC] Moocast G [USACO16DEC] Moocast G 题面翻译 Farmer John 的 N N N 头牛 ( 1 ≤ N ≤ 1000 1 \leq N \leq 1000 1≤N≤1000) 为了在他们之间传播信息&#xff0c;想要组织一个"哞哞广播"系统。奶牛们决定去用步话机装备自己而不是在很远的距离…...

针对国内AIGC市场,国内目前出台了那些法律法规?

针对国内AIGC市场&#xff0c;特别是AI生成与合成内容方面&#xff0c;中国已经出台了一系列法律法规来规范其发展和应用。 图片源自“央视新闻” 以下是一些主要的法律法规&#xff1a; 一、国家层面的法律法规 《中华人民共和国网络安全法》 施行时间&#xff1a;2017年6月…...

Windows+Ubuntu双系统下时钟设置

Ubuntu默认把系统时间&#xff08;硬件时钟&#xff09;设置为UTC时间&#xff0c;并根据本地时区和夏令时设置自动调整本地时间&#xff0c;这是一种很合理很优雅的处理硬件时钟和本地时钟的模式。而Windows系统是默认情况下把系统时间设置为本地时间&#xff0c;历来独霸电脑…...

一些写leetcode的笔记

标准库中的string类没有实现像C#和Java中string类的split函数&#xff0c;所以想要分割字符串的时候需要我们自己手动实现。但是有了stringstream类就可以很容易的实现&#xff0c;stringstream默认遇到空格、tab、回车换行会停止字节流输出。 #include <sstream> #incl…...

shopify主题开发之template模板解析

在 Shopify 主题开发中&#xff0c;template 文件是核心部分&#xff0c;它们定义了店铺中不同页面的布局和结构。下面将详细介绍 Shopify 主题中的 template 模板。 一、template 文件结构 在 Shopify 主题中&#xff0c;templates 文件夹包含了所有用于生成店铺页面的模板文…...

Zookeeper学习

文章目录 学习第 1 章 Zookeeper 入门1.1 概述Zookeeper工作机制 1.2 特点1.3 数据结构1.4 应用场景统一命名服务统一配置管理统一集群管理服务器动态上下线软负载均衡 1.5 下载zookeeper 第 2 章 Zookeeper 本地安装2.1 本地模式安装安装前准备配置修改操作 Zookeeper本地安装…...

FAT32文件系统详细分析 (格式化SD nandSD卡)

FAT32 文件系统详细分析 (格式化 SD nand/SD 卡) 目录 FAT32 文件系统详细分析 (格式化 SD nand/SD 卡)1. 前言2.格式化 SD nand/SD 卡3.FAT32 文件系统分析3.1 保留区分析3.1.1 BPB(BIOS Parameter Block) 及 BS 区分析3.1.2 FSInfo 结构扇区分析3.1.3 引导扇区剩余扇区3.1.4 …...

通义灵码在Visual Studio上

通义灵码在Visual Studio上不好用&#xff0c;有时候会出现重影&#xff0c;不如原生的自动补全好用&#xff0c;原生的毕竟的根据语法来给出提示的。...

基于SpringBoot的招生宣传管理系统【附源码】

基于SpringBoot的招生宣传管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2系统功能结构设计 4.3数据库设计 4.3.1数据库E-R图设计 4.3.2 数据库表结构设计 5 系统实现 5.1管理员功能介绍 5.1.1管理员登录 …...

SOT23封装1A电流LDO具有使能功能的 1A、低 IQ、高精度、低压降稳压器系列TLV757P

前言 SOT23-5封装的外形和丝印 该LDO适合PCB空间较小的场合使用&#xff0c;多数SOT23封装的 LDO输出电流不超过0.5A。建议使用时输入串联二极管1N4001,PCB布局需要考虑散热&#xff0c;参考文末PCB布局。 1 特性 • 采用 SOT-23 (DYD) 封装&#xff0c;具有 60.3C/W RθJA •…...

python绘制3d建筑

import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d.art3d import Poly3DCollection# 随机生成建筑块数据 def generate_building_blocks(num_blocks, grid_size100, height_range(5, 50), base_size_range(10, 30)):buildings []for _ in range(…...

机器学习实战21-基于XGBoost算法实现糖尿病数据集的分类预测模型及应用

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下机器学习实战21-基于XGBoost算法实现糖尿病数据集的分类预测模型及应用。首先阐述了 XGBoost 算法的数学原理及公式&#xff0c;为模型构建提供理论基础。接着利用 kaggle 平台的糖尿病数据集&#xff0c;通过详细的…...

ElasticSearch数据类型和分词器

一、数据类型 1、Text &#xff08;文本数据类型&#xff09; 2、Keyword&#xff08;关键字数据类型&#xff09; 3、Alias&#xff08;别名类型&#xff09; 4、Arrays (集合类型) 5、Boolean&#xff08;布尔类型&#xff09; 6、日期类型 7、Numeric &#xff08;数…...

【云原生监控】Prometheus之PushGateway

Prometheus之PushGateway 文章目录 Prometheus之PushGateway介绍作用资源列表基础环境一、部署PushGateway1.1、下载软件包1.2、解压软件包1.3、编辑配置systemctl启动文件1.4、创建日志目录1.5、加载并启动1.6、监控端口1.7、访问PushGateway 二、 配置Prometheus抓取PushGate…...

sqlalchemy JSON 字段写入时中文序列化问题

JSON字段定义 from sqlalchemy import Column, JSONclass Table(Base):__tablename__ "table"__table_args__ ({"comment": "表名称"})...extra Column(JSON, comment"其他属性")...局部序列化 def create(extra):table Table()#…...

C++ 类域+类的对象大小

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 所属栏目&#xff1a;C知识点的补充_Jason_from_China的博客-CSDN博客 概念概述 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中&#xff…...

QT开发:深入详解QtCore模块事件处理,一文学懂QT 事件循环与处理机制

Qt 是一个跨平台的 C 应用程序框架&#xff0c;QtCore 模块提供了核心的非 GUI 功能。事件处理是 Qt 应用程序的重要组成部分。Qt 的事件处理机制包括事件循环和事件处理&#xff0c;它们共同确保应用程序能够响应用户输入、定时器事件和其他事件。 1. 事件循环&#xff08;Ev…...

小米,B站网络安全岗位笔试题目+答案

《网安面试指南》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484339&idx1&sn356300f169de74e7a778b04bfbbbd0ab&chksmc0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene21#wechat_redirect 《Java代码审…...

OpenClaw性能调优:Qwen3-14B镜像任务吞吐量提升300%实战

OpenClaw性能调优&#xff1a;Qwen3-14B镜像任务吞吐量提升300%实战 1. 问题背景与挑战 去年在尝试用OpenClaw对接本地部署的Qwen3-14B模型时&#xff0c;我发现一个尴尬的现象&#xff1a;当处理批量文件整理任务时&#xff0c;系统平均响应时间会从单任务的3秒暴增到20秒以…...

OpenClaw+SecGPT-14B:构建无需编程的内网资产管理系统

OpenClawSecGPT-14B&#xff1a;构建无需编程的内网资产管理系统 1. 为什么需要无代码内网资产管理 去年接手公司IT运维时&#xff0c;我发现内网设备清单还是三年前的Excel表格。每当新设备接入或旧设备淘汰&#xff0c;手动更新文档总会被遗忘。更麻烦的是&#xff0c;不同…...

MQTT(消息队列遥测传输)

MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;是一种轻量级、基于发布/订阅模式的消息传输协议&#xff0c;专为受限设备、低带宽、高延迟、不稳定网络的物联网通信设计的。MQTT诞生于1999年&#xff0c;目的是用最小的网…...

YamlDotNet缓冲区反序列化:提升大数据集处理性能的终极指南

YamlDotNet缓冲区反序列化&#xff1a;提升大数据集处理性能的终极指南 【免费下载链接】YamlDotNet YamlDotNet is a .NET library for YAML 项目地址: https://gitcode.com/gh_mirrors/ya/YamlDotNet YamlDotNet是一款功能强大的.NET库&#xff0c;专为YAML数据处理设…...

ASTM D4169针刺棉手袋的产品有效期验证方案

针刺棉手袋的产品有效期验证&#xff0c;核心是确定产品在正常使用条件下的使用寿命&#xff08;通常以使用次数或年限表示&#xff09;&#xff0c;而不仅仅是物理保质期。 结合你之前关注医疗器械运输验证的背景&#xff0c;这里需强调&#xff1a;针刺棉手袋的“有效期”验…...

基于SpringBoot + Vue的定制化设计服务平台

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…...

基于S7-200控制的自动洗车系统的综合设计与实现

基于S7-200控制的自动洗车系统 本设计包括设计报告&#xff0c;PLC组态仿真&#xff0c;I/O接口&#xff0c;带注释程序pdf版&#xff0c;接线图&#xff0c;控制电路图&#xff0c;主电路图,PLC接线图&#xff0c;顺序功能图 总体设计 系统有自动和手动模式&#xff0c;选择手…...

FLAME PyTorch高效构建参数化3D人脸模型实战指南

FLAME PyTorch高效构建参数化3D人脸模型实战指南 【免费下载链接】FLAME_PyTorch 项目地址: https://gitcode.com/gh_mirrors/fl/FLAME_PyTorch 在数字内容创作、虚拟现实和影视制作等领域&#xff0c;3D建模技术正发挥着越来越重要的作用。其中&#xff0c;参数化人脸…...

小程序支付实名认证跳转:从安卓兼容到iOS限制的实战处理方案

1. 小程序支付实名认证跳转的痛点解析 最近在开发一个保险行业的小程序时&#xff0c;遇到了一个让人头疼的问题&#xff1a;支付环节需要跳转到微支保小程序进行实名认证。最初的做法很简单粗暴&#xff0c;直接在页面加载时就调用wx.navigateToMiniProgram跳转。测试时发现&a…...

Unity3D LED点阵屏幕模拟

基于 Unity3D 引擎开发的 LED 点阵屏幕模拟项目&#xff0c;可通过浏览器直接向程序发送 HTTP 指令&#xff0c;实现中英文、数字及各类标点符号的动态显示。系统支持灵活调整点阵规模与显示颜色&#xff0c;并具备超长文本自动循环滚动等功能&#xff0c;满足多样化展示需求。…...