首页 > 编程语言 >C++--变量作用域

C++--变量作用域

时间:2023-10-25 11:11:52浏览次数:33  
标签:初始化 变量 作用域 局部变量 C++ -- int 全局变量 声明

C++--变量作用域

作用域是程序的一个区域,一般来说,有三个地方可以声明变量:

  • 在函数或一个代码块内部声明的变量,称为局部变量
  • 在函数参数的定义中声明的变量,称为形式参数
  • 在所有函数外部声明的变量,称为全局变量

局部变量

在函数或一个代码块{}内部声明的变量,称为局部变量。它们只能被函数内部或代码块内部的语句使用。

#include<iostream>
using namespace std;
int main(){
	//声明局部变量
	int a, b;
	int c;
	//实际初始化
	a= 10;
	b = 20;
	c = a+b;
	cout<< c;
	return 0;
	
}

结果显示:

全局变量

在所有函数外部定义的变量(通常是在程序的头部),称为全局变量。全局变量的值在程序的整个生命周期内都是有效的。全局变量可以被任何函数访问。也就是说,全局变量一旦声明,
在整个程序中都是可用的。

#include<iostream>
using namespace std;
//声明全局变量
int g;
int main(){
	//局部变量声明
	int a, b;
	//实际初始化
	a = 10;
	b = 20;
	g = a + b;
	cout<<g<<endl;
	return 0;
}

结果显示:

在程序中,局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值。
代码实例:

#include<iostream>
using namespace std;
int g = 20;//全局变量
int main(){
	//局部变量
	int g = 10;
	cout<<g<<endl;
	return 0;
}

结果显示:

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

当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:

数据类型 初始化默认值
int 0
char '\0'
float 0
double 0
pointer NULL

正确初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果,例如报错,或者出现奇怪的值。

标签:初始化,变量,作用域,局部变量,C++,--,int,全局变量,声明
From: https://www.cnblogs.com/bonne-chance/p/17786671.html

相关文章

  • Kubernetes常见面试题
    说明:以下问题只做简单总结,详细内容请参考链接:https://github.com/bregman-arie/devops-exercises/blob/master/topics/kubernetes/README.md#kubernetes-1011、k8s是什么,为什么企业选择使用它     k8s是一个开源应用,给用户提供了管理、部署、扩展容器的能力。将容器运......
  • 界面控件开发包DevExpress v23.1.6全新发布|附高速下载
    DevExpressUniversal拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress今年第一个重要版本v23.1正式发布,该版本拥有众多新产品和数十个具......
  • 10.25算法
    矩阵置零给定一个 mxn的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。请使用原地算法。 示例1:输入:matrix=[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例2:输入:matrix=[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,......
  • Meta Hacker Cup 2023 Round 1 题解
    ProblemA:HereComesSantaClaus给一个数列,要求分成若干组,要求每组至少2个数,使得所有组中位数的最大值与最小值之差尽量大,求这个值。#include<bits/stdc++.h>usingnamespacestd;#defineFor(i,n)for(inti=1;i<=n;i++)#defineFork(i,k,n)for(inti=k;i<=n;i++)#define......
  • Unity中GameObject对象的方法Find,FindGameObjectsWithTag等API的使用方法
    Unity中GameObject对象的方法Find,FindGameObjectsWithTag等API的使用方法.Find(stringname):.FindGameObjectsWithTag(stringtag):.FindGameObjectWithTag(stringtag):.FindWithTag(stringtag):在Unity中,GameObject类具有一些用于查找和操作游戏对象的方法。.Find(stringna......
  • 【无标题】
    ubuntu22.04启动出现这个问题:cannotconnecttoalreadyrunningIDEinsranceexecption:process2837isstillrunning打开intellij时出错“无法连接到已运行的IDE实例。异常:进程2,837仍在运行”处理的步骤:找到idea项目的地址cd~/.config/JetBrains/IntelliJIdea2023.2......
  • 灯塔--链表的学习
    双链表双链表的存储结构typedefstructDNode{ //定义双链表的节点类型 ElemTypedata; //数据域 structDNode*prior,*next;}DNode,*DLinkList;双链表的初始化boolInitDLinkList(DLinkList&L){DNodep=(DNode*)malloc(sizeof(DNode));if(L==NULL)retur......
  • 基于redis实现防重提交
    自定义防重提交1.自定义注解importjava.lang.annotation.*;/***自定义防重提交*@author*@date2023年9月6日11:19:13*/@Documented@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceRepeatSubmit{/***默认防......
  • ECharts
    ECharts简介ECharts是使用JavaScript实现的一个开源可视化库.Echarts的引入通过官网下载echarts的js文件通过npm或者cnpm下载,下载后这样使用:varecharts=request('echarts');ECharts的基本使用步骤一:下载并引入ECharts.js文件------->图表依赖于这个js文件步骤二:......
  • 外贸网站建设?有哪些建站平台
    外贸业务越来越重要,特别是在全球化进程中,越来越多的企业开始将其重心移至海外市场。建立一个高质量的外贸网站对于任何成功的海外企业而言都是至关重要的。然而,对于小企业来说,建立一个专业的外贸网站可能需要相当高的成本。但是,现在有许多免费外贸网站建设平台可供选择,这让建立一个......