C++全局变量的定义
在C++中,全局变量被定义为可以从整个程序的任何地方使用或访问的变量,这是任何编程语言中的范围类型之一。全局变量的范围是指程序代码的范围,在这个范围内,变量可以被访问、定义、声明或使用,一般来说,全局变量被定义为允许程序的任何部分使用的变量,没有任何限制或错误,可用于程序的任何部分或整个程序,但它们通常可以在程序的顶部或开始处声明或定义,这将是程序的所有块和函数之外。
全局变量在C++中的作用
在这篇文章中,我们将讨论C++中的全局变量。在C++中,有一个概念被称为程序中的变量范围,这意味着变量在程序中的可访问性,在程序中的函数或块中。因此,在C++中有两种类型的范围变量,如局部变量,即在程序块或函数中声明的变量,只对程序的这些块和函数可用。另一种类型的范围变量是全局变量,它是在程序的开头或顶部声明或定义的变量,对整个程序可用,因此可以通过程序的任何部分访问它们。所以,一般来说,这意味着全局变量可以定义在程序的顶部,并且可以被程序中任何引用这个全局变量的函数(包括main)或块看到和修改。
C++全局变量的例子
让我们在下面的例子中看看如何在C++程序中定义和声明这种全局变量。
例一
代码
#include <iostream> using namespace std; float g = 20; int main () { std::cout<<"A simple program for demonstrating global variables in C++"<<endl; std::cout<<"\n"<<endl; float p; p = 10; std::cout << "The value of the local variable p is " << p <<endl; g++; std::cout<<"\n"<<endl; std::cout << "The value of the global variable g is " <<g <<endl; return 0; }
输出
在上面的程序中,我们可以看到我们在main()函数外声明和定义了全局变量 "g",其值为20,在程序中声明了局部变量 "p",其值为10。因此,当我们打印一个局部变量时,我们可以看到我们可以在函数中打印或使用它,但全局变量的值甚至可以在函数中被修改,在上述代码中,我们将g的值增加1。所以在上面的截图中,我们可以看到输出。
在C++中,根据变量的存储类别,变量被分为全局、局部、静态等。因此,定义在所有函数和块之外但在程序中的变量被称为全局变量。在C++中,可能会出现全局变量和局部变量名称相同的情况,这让编译器感到困惑,并可能产生错误,但如果它们处于不同的范围内,那么编译器将打印局部变量名称的值,因为它优先考虑的是局部变量而不是全局变量。
因此,有时全局变量的使用被认为是危险的,但这是对整个程序中的任何一个函数或块进行访问的最佳方式之一,它非常冗长,当在函数或块中每次声明变量都很困难时,它就非常有用。所以在这种情况下,为了获得对与局部变量同名的全局变量的访问,C++提供了一个操作符,即范围解析操作符(::)。所以为了理解这个问题,我们将考虑下面的一个简单的例子。
例子二
代码
#include<iostream> using namespace std; float g = 5.8; int main() { float g = 9.3; cout << "This program uses scope resolution operator to access global variable value " << endl; cout <<"\n" <<endl; cout << "The value stored in the global variable g is " << g <<endl; cout <<"\n" << endl; cout<< "The value stored in the local variable g is " << g <<endl; return 0; }
输出
在上面的程序中,我们可以看到我们有全局变量和局部变量,名字都是 "g",但是当我们试图打印这两个值时,它只会打印 "9.3",因为编译器会优先考虑局部变量而不是全局变量。因此,在上面的截图中,只有当我们同时打印全局和局部变量的值时,输出才是9.3。因此,为了打印全局变量的值,我们需要使用范围解析操作符,所以上面的代码将被修改为内联11,当我们打印g的值时,我们必须写成::g来访问g作为全局变量的值,我们可以在下面看到修改后的代码和输出显示全局和局部变量的值。
代码
#include<iostream> using namespace std; float g = 5.8; int main() { float g = 9.3; cout << "This program uses scope resolution operator to access global variable value " << endl; cout <<"\n" <<endl; cout << "The value stored in the global variable g is " << ::g <<endl; cout <<"\n" << endl; cout<< "The value stored in the local variable g is " << g <<endl; return 0; }
输出
在上面的程序中,我们可以看到,我们在程序顶部的main()函数之前将g声明为一个全局变量,该变量持有 "5.8 "的值。而我们在main()函数中声明了局部变量g,它持有 "9.3 "的值。因此,在上面的截图中,我们可以看到我们能够在第11行使用范围解析操作符(::)打印全局变量的两个值,在第13行打印局部变量。
总结
在这篇文章中,我们得出结论,C++中的全局变量是一个在程序顶部定义和声明的变量,与局部变量相比,它甚至可以在整个程序的函数或块中使用。这篇文章通过一个简单的例子看到了我们如何声明全局变量并在程序中使用它们。在这篇文章中,我们还看到,如果变量的名字有歧义,也就是局部变量和全局变量的名字相同,那么就可以通过上述文章中的一个例子,使用范围解析操作符来访问全局变量。