当前位置: 首页 > 知识库问答 >
问题:

不同作用域中的静态和全局变量

令狐功
2023-03-14

我是一个程序员初学者...这里我有一段代码有两个函数...其中一个使用全局变量,而另一个使用局部静态变量...

下面是代码:

//Scope Rules
#include <iostream>
using namespace std;

int num {52};     //Global Variable - Declared outside any class or function

void globalExample();
void staticLocalExample();

void globalExample(){
    cout << "\nGlobal num in globalExample is: " << num << " - start" << endl;
    num *= 4;
    cout << "Global num in globalExample is: " << num << " - end" << endl;
}
void staticLocalExample(){
    static int num {5};      //local to staticLocalExample - retains it's value between calls
    cout << "\nLocal static num in staticLocalExample is: " << num << " - start" << endl;
    num += 20;
    cout << "Local static num in staticLocalExample is: " << num << " - end" << endl;
}

int main() {

    globalExample();
    globalExample();
    staticLocalExample();
    staticLocalExample();

    return 0;
}

我两次调用这些函数的原因是为了让我明白,第二次调用该函数时,更改将存储到变量中,因此结果将不同。

    null

共有1个答案

云卓
2023-03-14

我想我得出结论了...所以如果我错了请告诉我...

Global varialble:您可以更改它们,并在其作用域之外或内部分配不同的数字

静态变量:只能在其范围内更改,不能在其范围外更改

#include <iostream>
using namespace std;

int num {52};     //Global Variable - Declared outside any class or function

void globalExample();
void staticLocalExample(int x);

void globalExample(){
    cout << "\nGlobal num in globalExample is: " << num << " - start" << endl;
    num *= 4;
    cout << "Global num in globalExample is: " << num << " - end" << endl;
}
void staticLocalExample(int x){
    static int num {5};      //local to staticLocalExample - retains it's value between calls
    cout << "\nLocal static num in staticLocalExample is: " << num << " - start" << endl;
    num += 20;
    cout << "Local static num in staticLocalExample is: " << num << " - end" << endl;
}

int main() {

    globalExample();
    num = 20;
    globalExample();
    staticLocalExample(10);
    staticLocalExample(15);

    return 0;
}
Global num in globalExample is: 52 - start
Global num in globalExample is: 208 - end

Global num in globalExample is: 20 - start     <-------
Global num in globalExample is: 80 - end

Local static num in staticLocalExample is: 5 - start
Local static num in staticLocalExample is: 25 - end

Local static num in staticLocalExample is: 25 - start
Local static num in staticLocalExample is: 45 - end
 类似资料:
  • 4. 全局变量、局部变量和作用域 我们把函数中定义的变量称为局部变量(Local Variable),由于形参相当于函数中定义的变量,所以形参也是一种局部变量。在这里“局部”有两层含义: 1、一个函数中定义的变量不能被另一个函数使用。例如print_time中的hour和minute在main函数中没有定义,不能使用,同样main函数中的局部变量也不能被print_time函数使用。如果这样定义:

  • 主要内容:Python局部变量,Python全局变量,获取指定作用域范围中的变量所谓 作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。 变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。本节我们只讲解两种变量, 局部变量和 全局变量。 Python局部变量 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能

  • 问题内容: 我试图在某些函数中声明一些全局变量,然后将具有这些函数的文件导入另一个函数。但是,我发现在第二个文件中运行该函数不会创建全局变量。我尝试创建另一个具有相同名称的变量,但是当我打印出该变量时,它将打印出第二个文件的值,而不是全局值 globals.py main.py 这将打印0。如果我没有main,程序将出错(值未定义)。 如果我在函数外部声明,将采用global的值,而不是在中设置的

  • 本文向大家介绍从局部变量和全局变量开始全面解析Python中变量的作用域,包括了从局部变量和全局变量开始全面解析Python中变量的作用域的使用技巧和注意事项,需要的朋友参考一下 理解全局变量和局部变量 1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量。例如: 输出结果是123。说明

  • 问题内容: 我是Java编程的新手。谁能说出Java中的全局变量和局部变量之间的区别? 问题答案: 您的问题有点困惑,因为您在标题中引用的是static / global,而在问题中引用的是global / local。 变量绑定到一个 类 , 每个类 将有 一个实例 。 类可以具有成员变量,并且该类的 每个实例 将有 一个实例 。 请注意,如果您有多个类加载器,这将变得更加复杂。在这种情况下,您