浅谈C++变量作用域

 更新时间:2020年06月23日 08:38:10   作者:菜鸟教程  
这篇文章主要介绍了C++变量作用域的的相关资料,文中代码非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

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;
 
 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

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

在程序中,局部变量和全局变量的名称可以相同。

但是在函数内的局部变量与全局变量是两个独立的变量,互不影响。

下述代码中,全局变量定义了一个int g=99,局部变量定义了一个int g=10,由于这两个g所在的作用域不同,所以各自独立。

#include <iostream>
using namespace std;

// 全局变量声明
int g = 99;

// 函数声明
int func();

int main()
{
 // 局部变量声明
 int g = 10;
 //cout << g;
 int kk = func();
 cout << kk;
 return 0;
}

// 函数定义
int func()
{
 return g;
}

以上就是由浅入深学习C++变量作用域的详细内容,更多关于C++变量作用域的资料请关注脚本之家其它相关文章!

相关文章

  • C++计算24点的简单程序

    C++计算24点的简单程序

    这篇文章主要为大家详细介绍了C++计算24点的简单程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • C语言之双向链表详解及实例代码

    C语言之双向链表详解及实例代码

    这篇文章主要介绍了C语言之双向链表的相关资料,并附实例代码,有需要的小伙伴可以参考下
    2016-09-09
  • C语言实现扫雷游戏(可展开)

    C语言实现扫雷游戏(可展开)

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏,实现扫雷展开和提醒,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • short与int转换的小例子

    short与int转换的小例子

    short与int转换的小例子,需要的朋友可以参考一下
    2013-04-04
  • C++中priority_queue的使用与模拟实现

    C++中priority_queue的使用与模拟实现

    本文主要介绍了C++中priority_queue的使用与模拟实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C++实现动态烟花代码

    C++实现动态烟花代码

    这篇文章主要介绍了利用C++实现的放烟花程序,用到了EGE图形库,文中的示例代码讲解详细,对我们学习C++有一定帮助,需要的可以参考一下
    2023-01-01
  • 一篇文章带你了解C++的KMP算法

    一篇文章带你了解C++的KMP算法

    这篇文章主要介绍了c++ 实现KMP算法的示例,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • C++利用用埃式筛法求解素数

    C++利用用埃式筛法求解素数

    埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。本文将利用这一算法实现求解素数,感兴趣的可以了解一下
    2023-01-01
  • C++中内存池和内存分配区Arena概念详解

    C++中内存池和内存分配区Arena概念详解

    在 C++ 中,内存分配区(Arena)通常指的是预先分配的一大块连续内存空间,这种方法的主要目的是提高内存分配和释放的效率,下面就跟随小编一起了解一下C++中内存池和内存分配区Arena相关概念吧
    2023-12-12
  • C语言分装实现三子棋游戏详解

    C语言分装实现三子棋游戏详解

    这篇文章主要为大家详细介绍了C语言分装实现三子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05

最新评论