理解C++中的全局变量

理解C++中的全局变量

如果变量是在函数外部而不是内部声明的,则在函数 main() 和 MultiplyNumbers() 中都可使用它们。以下代码示例演示了全局变量,它们是程序中作用域最大的变量。

#include 
using namespace std;

// three global integers
int firstNumber = 0;
int secondNumber = 0;
int multiplicationResult = 0;

void MultiplyNumbers ()
{
    cout << "Enter the first number: ";
    cin >> firstNumber;

    cout << "Enter the second number: ";
    cin >> secondNumber;

    // Multiply two numbers, store result in a variable
    multiplicationResult = firstNumber * secondNumber;

    // Display result
    cout << "Displaying from MultiplyNumbers(): ";
    cout << firstNumber << " x " << secondNumber;
    cout << " = " << multiplicationResult << endl;
}
int main ()
{
    cout << "This program will help you multiply two numbers" << endl;

    // Call the function that does all the work
    MultiplyNumbers();

    cout << "Displaying from main(): ";

    // This line will now compile and work!
    cout << firstNumber << " x " << secondNumber;
    cout << " = " << multiplicationResult << endl;

    return 0;
}

输出:

This program will help you multiply two numbers
Enter the first number: 51
Enter the second number: 19
Displaying from MultiplyNumbers(): 51 x 19 = 969
Displaying from main(): 51 x 19 = 969

分析:

程序清单 3.3 在两个函数中显示了乘法运算的结果,而变量 firstNumber、 secondNumber 和 multiplicationResult 都不是在这两个函数内部声明的。这些变量为全局变量,因为声明它们的第 5~7 行不在任何函数内部。注意到第 23 和 36 行使用了这些变量并显示它们的值。尤其要注意的是,虽然 multiplicationResult 的值是在 MultiplyNumbers() 中指定的,但仍可在 main() 中使用它。

警告:

不分青红皂白地使用全局变量通常是一种糟糕的编程习惯。这是因为全局变量可在任何函数中赋值,因此其值可能出乎意料,在修改全局变量的函数运行在不同的线程中或由小组中的不同程序员编写时尤其如此。
要像示例程序那样在 main() 中获取乘法运算的结果,一种更妥善的方式是不使用全局变量,而让 MultiplyNumbers() 将结果返回给 main()。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器

你可能感兴趣的:(C++编程基础,c++)