C++教程
+ -

C++ 变量作用域

2019-09-09 4 0

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

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

我们将在后续的章节中学习什么是函数和参数。本章我们先来讲解什么是局部变量和全局变量。

局部变量

在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或者代码块内部的语句使用。下面的实例使用了局部变量:

#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;
  return 0;
}

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

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

当上面的代码被编译和执行时,它会产生下列结果:

10

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

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

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

正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果。

0 篇笔记 写笔记

C# 索引器(Indexer)
索引器(Indexer) 允许一个对象可以像数组一样被索引。当您为类定义一个索引器时,该类的行为就会像一个 虚 拟数组(virtualarray) 一样。您可以使用数组访问运算符([ ])来访问该类的实例。语法一维索引器的语法如下:element-type this[int index] { /......
Perl 引用
引用就是指针,Perl 引用是一个标量类型可以指向变量、数组、哈希表(也叫关联数组)甚至子程序,可以应用在程序的任何地方。创建引用定义变量的时候,在变量名前面加个,就得到了这个变量的一个引用,比如:$scalarref = $foo; # 标量变量引用$arrayref = @ARG......
Perl POD 文档
Perl 中可以在模块或脚本中嵌入 POD(Plain Old Documentation) 文档。POD 是一种简单而易用的标记型语言(置标语言)。POD 文档使用规则:POD 文档以 =head1 开始, =cut 结束, =head1 前与 =cut 后添加一空行。Perl 会忽略 POD 中......
PHP 函数不定参数和默认参数
PHP作为一门弱化语言,支持c语言类似的不定参数和可选参数,只是格式书写格式不致,如:不定参数:使用函数fun_num_args()获取参数个数,使用fun_get_args()获取参数,指定索引则获取第内个参数,未指定索引指获取所有参数并生成数组返回。
XPath在要与XPath表达式一起使用的节点上定义以下运算符。序号Operator描述 1/用 于选择特定节点下的节点。 2//用 于从根节点选择节点 3[…]用 于检查节点值 4|用 于两个节点集的并集 XPath在要与XPath表达式一起使用的节点上定义以下功能。序号Ope......
Ruby 方法与其他编程语言中的函数类似。Ruby 方法用于捆绑一个或多个重复的语句到一个单元中。方法名应以小写字母开头。如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常量,从而导致不正确地解析调用。方法应在调用之前定义,否则 Ruby 会产生未定义的方法调用异常。语法def metho......
函数是一起执行任务的一组语句,每个C程序都有至少一个函数,即 main(),所有最简单的程序都可以定义其他函数函数 declaration 告诉编译器函数的名称,返回类型和参数,函数定义提供函数的实际主体。C标准库提供了程序可以调用的许多内置函数。如, strcat()可以连接两个字符串, mem......
Perl 中有两种不同地面向对象编程的实现:一是基于匿名哈希表的方式,每个对象实例的实质就是一个指向匿名哈希表的引用。在这个匿名哈希表中,存储来所有的实例属性。二是基于数组的方式,在定义一个类的时候,我们将为每一个实例属性创建一个数组,而每一个对象实例的实质就是一个指向这些数组中某一行索引的引用。在......
本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子中, 4 和 5 被称为 操 作数,”+ “ 称为运算符。Python语言支持以下类型的运算符:算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级接下来让我们一个个来学习Python的......
random() 方法返回随机生成的一个实数,它在[0,1)范围内。语法以下是 random() 方法的语法:import randomrandom.random()注 意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。参数无返回值返回随......
rint() 方法返回最接近参数的整数值。语法该方法有以下几种语法格式:double rint(double d)参数double 原始数据类型。返回值返回 double 类型数组,是最接近参数的整数值。实例实例public class Test{ public static void mai......
atan() 返回x的反正切弧度值。语法以下是 atan() 方法的语法:import mathmath.atan(x)注 意:atan()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。参数x — 一个数值。返回值返回x的反正切弧度值。实例以下展示了使用 ata......
degrees() 将弧度转换为角度。语法以下是 degrees() 方法的语法:import mathmath.degrees(x)注 意:degrees()是不能直接访问的,需要导入 math 模块,然后通过 math 静态对象调用该方法。参数x — 一个数值。返回值返回一个角度值。实例以下展示......
MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP。 在这些语言中,Mysql在PHP的web开发中是应用最广泛。在本教程中我们大部分实例都采用了 PHP 语言。如果你想了解 Mysql 在 PHP 中的应用,可以访问我们的 PHP教程。PHP提供了多种方式来访问和......
/ruby/ruby-variable.html变量是持有可被任何程序使用的任何数据的存储位置。Ruby 支持五种类型的变量。一般小写字母、下划线开头:变量(Variable)。$ 开头:全局变量(Global variable)。@ 开头:实例变量(Instance variable)。@@ 开头......
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!