精华内容
下载资源
问答
  • 主要介绍了Vue全局变量局部变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 函数体内定义了一个变量,每当程序运行到该语句时都会给该局部变量...静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化(这一点非常的重要);静态局部变量一般在声明处初始化
  • ruby 局部变量

    2021-01-02 14:51:39
    局部变量不像全局和实变量一样初始化前含nil值. ruby> $foo nil ruby> @foo nil ruby> foo ERR: (eval):1: undefined local variable or method `foo’ for main(Object) 对局部变量的第一次赋值做的...
  • C语言中,未初始化的局部变量到底是多少? 答案往往是: 与编译器有关。 可能但不保证初始化为0。 未确定。 总之,全部都是些一本正经的形而上答案,这很令人讨厌。 但凡一些人给你滔滔不绝地扯编译器,C库,...
  • 全局变量在整个源文件的作用域都是有效的,只需要一个源文件中定义全局变量其他不包含全局变量定义的源文件中用extern关键字再次声明这个全局变量即可。 也可以一个源文件中定义这个全局变量头文件中用...

    局部变量

    定义

    定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错

    //可以直接声明定义,也可以分开写
    //如果变量不多,非该类的函数,可以直接在唯一一个源函数上定义
    int f1(int a){
        int b,c;  //b,c仅在函数f1()内有效
        return a+b+c;
    }
    int main(){
        int m,n;  //m,n仅在函数main()内有效
        return 0;
    }
    
    1. main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。main 函数也是一个函数,与其它函数地位平等。
      如果要使用,可以通过指针,B类成为main类的成员函数

    2. 形参变量、在函数体内定义的变量都是局部变量。实参给形参传值的过程也就是给局部变量赋值的过程。

    3. 可以在不同的函数中使用相同的变量名,它们表示不同的数据,分配不同的内存,互不干扰,也不会发生混淆。

    4. 在语句块中也可定义变量,它的作用域只限于当前语句块

    全局变量

    定义

    在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。

    #include <stdio.h>
    int n = 10;  //全局变量
    
    void func1(){
        int n = 20;  //局部变量
        printf("func1 n: %d\n", n);
    }
    
    void func2(int n){
        printf("func2 n: %d\n", n);
    }
    
    void func3(){
        printf("func3 n: %d\n", n);
    }
    
    int main(){
        int n = 30;  //局部变量
        func1();
        func2(n);
        func3();
        //代码块由{}包围
        {
            int n = 40;  //局部变量
            printf("block n: %d\n", n);
        }
        printf("main n: %d\n", n);
        return 0;
    }
    
    func1 n: 20
    func2 n: 30//main函数内部的 n,而不是外部的 n
    func3 n: 10
    block n: 40
    main n: 30
    
    1. 对于 func1(),输出结果为 20,显然使用的是函数内部的 n,而不是外部的 n;func2() 也是相同的情况。

    全局变量和局部变量同名时,在局部范围内全局变量被“屏蔽”,不再起作用。或者说,变量的使用遵循就近原则,如果在当前作用域中存在同名变量,就不会向更大的作用域中去寻找变量。

    1. func3() 输出 10,使用的是全局变量,因为在 func3() 函数中不存在局部变量 n,所以编译器只能到函数外部,也就是全局作用域中去寻找变量 n。

    2. 由{ }包围的代码块也拥有独立的作用域,printf() 使用它自己内部的变量 n,输出 40。

    3. C语言规定,只能从小的作用域向大的作用域中去寻找变量,而不能反过来,使用更小的作用域中的变量。对于 main() 函数,即使代码块中的 n 离输出语句更近,但它仍然会使用 main() 函数开头定义的 n,所以输出结果是 30。

    全局函数不可以使用成员变量的数据

    void getValue();
    
    void getValue()
    {
    	int b = 2;
    
    	cout << a << endl << b << endl;//error:未声明标识符a
    }
    
    int main()
    {
    
    	int a = 1;
    
    	getValue();
    
    	system("pause");
    	return 0;
    }
    

    A类中使用全局函数

    1. A类定义全局函数
    2. B类加入全局函数定义的头文件, 直接使用

    A类中使用全局变量

    全局变量在整个源文件——pso.cpp、result.cpp的作用域都是有效的,只需要在一个源文件中定义全局变量

    //A.h
     extern int a1;
     //A.cpp
     int a1 = 1;
    
    //B.h
    #include "pso.h"
    //.cpp
    qDebug() << a1;
    

    example1

    class1中定义一个全局变量a[20]并赋值,在class2中使用数组a。

    main.h

    #include<iostream>
    #include <string>
    #include<math.h>
    #include "class1.h"
    #include "class2.h"
    
    using namespace std;
     
    int main()
    {
    	//函数从main文件开始顺序执行
    	class1 a1;
    	class2 a2;
    	
    	system("pause");//页面不会消失
    	return 0; 
    }
    

    class1.h文件:

    #include <iostream>
    
    using namespace std;
    
    extern int a[20];//extern关键字,再次声明这个全局变量
    
    class class1
    {
    public:
    	
    	class1();
    	~class1();
    
    	//以下为尝试初始化一个static成员变量	
     	//static  int c = 1;//报错:静态成员变量如果初始化,就必须为常量
    	//static  const int c = 1;//可以声明,但是必须添加添加const,就无法更改,与cpp函数的功能不符合
    	
    	static int c;//完成声明和定义,初始化放在了cpp函数中(方法唯一,推荐)
     
        //类似可变的pso
    };
    

    class1.cpp文件:

    #include "class1.h"
     
    int a[20];//全局变量
     
     //::起到说明作用,告诉编译器是clear1中的c
    int class1::c = 1;//类中静态变量的初始化,类似
    
    //全局变量——作用域在所有的cpp
    //局部变量——一般是定义在函数的内部
    
    class1::class1()
    {
    	c = 2;
    	
    	cout << "class1中数组a的值:";
    	for (int i = 0; i < 20; i++) {
    		a[i] = i + 1;
    		cout << " " << a[i];
    	}
    	cout << "\n";
    }
     
    class1::~class1()//析构函数,释放构造函数占用的内存
    {
    }
    

    class2.h文件:

    #pragma once//仅仅在VS中保证了不会有问题,解决“头文件重定义问题”
    #include "class1.h"
     
    class class2
    {
    public:
    	class2();
    	~class2();
    private:
    
    	//自定义的类相当于int类型; int a; int b;都是可以的,因此以下不会报错
    	//因为是以类的形式(不是指针,不用分配空间),程序从main文件执行至此处,会运行两次(c1、c2)的class1,因此结果有1+2个数组 
    	class1 c1;//类 对象
    	class1 c2;
    };
    

    class2.cpp文件:

    #include "class2.h"
     
    class2::class2()
    {
    	//cl(class1)作为class2类的成员变量,c作为class类的静态成员变量
    	cout << "c1.c的值为:" << c1.c << "     c2.c的值为:" <<c2.c<< endl;
    	c1.c = 5; //全局变量的值,可以被改变
    	cout << "c1.c的值为:" << c1.c << "     c2.c的值为:"<< c2.c << endl;
    	cout << "class2中数组a的值:";
    	for (int i = 0; i < 20; i++) {
    		cout << " " << a[i];
    	}
    	cout << endl;
    }
     
    class2::~class2()
    {
    }
    

    结果

    class1中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    class1中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    class1中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    c1.c的值为:2     c2.c的值为:2
    c1.c的值为:5     c2.c的值为:5
    class2中数组a的值: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    请按任意键继续. . .
    

    static用途

    定义一个二维数组(不可变的),可变的vector数组不用static const

    static const int sizepop = 200;//粒子群种群数量.50
    static const int psize = 6;// 粒子维数,绕组数量
    
    double p_best[sizepop][psize];//50*18  所有个体最优位置
    
    展开全文
  • 局部变量 一个函数内部定义的变量是内部变量,它只本函数范围内有效,也就是说只有本函数内才能使用它们,此函数以外是不能使用这些变量的。同样,复合语句中定义的变量只本复合语句范围内有效。这称为...
  • C语言使用static中声明局部变量的用法及作用源码 C语言使用static中声明局部变量的用法及作用源码 C语言使用static中声明局部变量的用法及作用源码 C语言使用static中声明局部变量的用法及作用源码 C语言使用...
  • 全局变量往往Main函数中声明,其作用...####### 根据变量的作用域遵循的原则(局部变量存在于声明该变量的块语句或方法结束的右花括号({})之前的作用域内),第一个变量j是for循环开始前定义的,它的作用域是Mai...
    全局变量往往在Main函数中声明,其作用范围为整个代码;局部变量存在于声明该变量的块语句或方法结束的右花括号({})之前的作用域内。本文对C#中的一些变量声明和范围关系借几个demo展示出来。
    情况一:变量包含产生歧义

    根据变量的作用域遵循的原则(局部变量存在于声明该变量的块语句或方法结束的右花括号({})之前的作用域内),第一个变量j是在for循环开始前定义的,它的作用域是Main()方法;第二个变量的作用域是在for循环;第一个变量j的作用域包含了第二个j的作用域。对编译器来说会存在歧义,因为编译器无法区分这两个变量,所以不允许声明第2个 变量。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200226bianliang
    {
        class Program
        {
            static void Main(string[] args)
            {
                int j = 20;//在Main中定义j为全局变量
                for(int i=0; i<10; i++)
                {
                    int j = 30;//在for循环中定义j为局部变量,但两者同为Main中,产生了包含与被包含的关系,顾报错。
                    Console.WriteLine(j);
                }
            }
        }
    }
    
    情况二:变量升级为“类级变量”

    C#在变量之间有一个基本的区分,类级别声明的变量看作字段(成员变量),而方法中声明的变量看作局部变量。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200226bianliang
    {
        class Program
        {
            public int j = 20;//在Main外声明了一个类级变量
            static void Main(string[] args)
            {
                int j = 30;//在Main函数中定义了一个Main中的变量
                Console.WriteLine(j);//执行主函数Main,打印Main中的j
                return;
            }
        }
    }
    
    情况三:主函数中引用类级变量

    对于情况二,第一个j通过public定义到Main函数之前,“升级”为类级变量(此时属于局部变量),通过下面的这种方法可以实现对类级变量的应用。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200226bianliang
    {
        class Program
        {
            public int j = 20;
            static void Main(string[] args)
            {
                int j = 30;
                Console.WriteLine(j);
                Program obj = new Program();//new创建对象
                Console.WriteLine("类级变量是:" + obj.j);//调用方法,引用类级变量j
                return;
            }
        }
    }
    
    情况四 :static声明引入类级变量

    如果选择将字段声明为 static,这时调用时可以直接引入类级变量。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _20200226bianliang
    {
        class Program
        {
            static int j = 20;//static声明
            static void Main(string[] args)
            {
                int j = 30;
                Console.WriteLine(j);
                //Program obj = new Program();
                Console.WriteLine("类级变量是:" + Program.j);//可直接调用
                return;
            }
        }
    }
    
    
    展开全文
  • Java-002 声明局部变量

    2019-07-13 08:41:54
    定义局部变量的基本语法格式同定义成员变量类似,所不同的是不能使用public、protected、private和static关键字对局部变量进行修饰,但可以使用final关键字。 [final] <变量类型> <变量名> final:可选...

    定义局部变量的基本语法格式同定义成员变量类似,所不同的是不能使用public、protected、private和static关键字对局部变量进行修饰,但可以使用final关键字。
    [final] <变量类型> <变量名>
    final:可选,用于指定该局部变量为常量
    变量类型:必选,用于指定变量的数据类型,其值可以为Java中的任何一种数据类型。
    变量名:必选,用于指定局部变量的名称,变量名必须是合法的Java标识符。

    public void grow(){
    	final boolean STATE;			//声明常量STATE
    	int age;								//声明局部变量age
    }
    
    展开全文
  • 全局变量和局部变量的区别在于作用域,全局变量整个py文件中声明,全局范围内可以使用;局部变量某个函数内部声明的,只能函数内部使用,如果超出使用范围(函数外部),则会报错。 #!/usr/bin/python3 # ...

    全局变量和局部变量的区别在于作用域,全局变量在整个py文件中声明,全局范围内可以使用;局部变量是在某个函数内部声明的,只能在函数内部使用,如果超出使用范围(函数外部),则会报错。

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time     :2018/11/28 9:25
    # @Author   :yosef
    # @Email    :wurz529@foxmail.com
    # @File:    :class22.py
    # @Software :PyCharm Community Edition
    A = 100 # 全局变量一般用大写字母表示
    
    def func():
        a = 50 # 局部变量一般用小写字母表示
        print(a+A)
    
    
    func()
    print(A)
    print(a) # 报错信息NameError: name 'a' is not defined

    在函数内部,如果局部变量与全局变量变量名一样,则优先调用局部变量。

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time     :2018/11/28 9:55
    # @Author   :yosef
    # @Email    :wurz529@foxmail.com
    # @File:    :class23.py
    # @Software :PyCharm Community Edition
    A = 100
    
    def func():
        A=250
        print(A)
    
    
    print(A)    # 打印全部变量
    func()      # 局部变量

    如果想在函数内部改变全局变量,需要在前面加上global关键字,在执行函数之后,全局变量值也会改变。

    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
    # @Time     :2018/11/28 9:55
    # @Author   :yosef
    # @Email    :wurz529@foxmail.com
    # @File:    :class23.py
    # @Software :PyCharm Community Edition
    A = 100
    
    def func():
        global  A
        A = 200
        print(A)
    
    
    print(A)    # 打印全局变量
    func()      # 局部变量
    print(A)   # 改变后的全局变量

     

    如果全局变量是列表类型,可以通过list的列表方法去对列表进行修改,并且可以不用global来声明。

    list_1 = [1,2,56,"list"]
    
    def changeList():
        list_1.append("over")
        print(list_1)
    
    changeList()
    print(list_1)

    展开全文
  • 对于有些编译器而言,同一个函数内可以定义多个同名的局部变量,比如两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以...
  • 局部变量一个函数内部定义的变量是内部变量,它只本函数范围内有效,即只有本函数内才能使用它们,此函数外是不能使用这些变量的,这样的变量成为局部变量局部变量的特点: (1)主函数main中定义的...
  • Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明局部变量局部变量的作用域为从声明位置开始到所在语句块结束。 变量的默认值均为 nil a =5 local b=5 fun...
  • 本文主要讲述python全局变量、局部变量和导入模块变量的方法。具有很好的参考价值,下面跟着小编一起来看下吧
  • 局部变量则是特定过程或函数中可以访问的变量。声明一个变量是很 容易的,但是讲到使用的时候,却不是想象的那样简单。至于本人则是经常定义全局变量使用,但也就是因为这样,定义的是全局变量。也饶了不少的弯子。 ...
  • 局部变量无论你赋值不赋值,都称为定义,以下情况会报错:int main(){ int a; int a;}全局变量声明+赋值=定义,以下是声明是可以的;int a;int a;void main(){}但是,以下这种情况是不允许的,会报错,重复定义int...
  • C++static声明静态局部变量 C++中,有时会希望函数中局部变量的值函数调用结束后不消失,而保留原来的值。 也就是其占用的存储单元不释放,下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是...
  • Linux使用局部变量、环境变量,export声明方法,并实际脚本中调用 局部变量和环境变量,**局部变量**只适用于当前shell,而**环境变量**是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是...
  • 主要介绍了简单了解java局部变量与成员变量的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 编程语言的三大发展阶段:面向机器语言、面向过程语言、面向对象语言 ; 其中面向对象语言主要体现三个特征:封装性、继承、...2、类声明变量称为对象变量,也简称 对象 ; 3、class 关键字是用来定义类 ; 4、...
  • 对于有些编译器而言,同一个函数内可以定义多个同名的局部变量,比如两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就那个循环体内。 2、如何引用一个已经定义过的全局变量...
  • 主要介绍了Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作,结合实例形式分析了Python闭包及闭包中的变量声明相关操作技巧,需要的朋友可以参考下
  • 局部变量

    千次阅读 2020-09-07 12:22:00
    局部变量就是定义大括号{ }包含的代码块内,例如: if(){ } if(){ }else{} for(){ } while() { } do{ } while(); switch(){ } 还有函数的定义,例如: voidfunc(void){ } 大括号{}包含的代码块内定义的...
  • var 声明变量,也可以不使用var 这样定义的就是全局变量,js解释器执行时首先全局构建一个全局对象,我们写的全局变量就是为这个全局对象做准备的,就是为了该对象的属性读取,可以使用this ,window,使用这个变量...
  • C#把声明为类型级的变量看作字段,而把方法中声明的变量看作局部变量。 代码如下:using System; namespace ConsoleApplication10{class Program{static int j = 20; public static void Main(string[] args){int j...
  • /* ============================================================================ Name : TestVariable.c Author : lf Version : Copyright : Your copyright notice Description : 局部变量
  • 局部变量和全局变量总汇,希望对大家有帮助!
  • 局部变量,而那个局部变量的作用域就那个循环体内。 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern 关键字,如果用引用头文件方式 来引用某个头文件中声明的全局...
  • MySQL定义局部变量

    2021-04-16 17:12:35
    局部变量定义注意事项:必须存储过程或函数中定义,且若不是最开始定义的,则必须begin end;(注意一定要加分号;)块中定义与使用 至于MySQL四种变量有什么区别,可参考AlbertS的文章MySQL中全局变量、会话...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 361,549
精华内容 144,619
关键字:

局部变量在哪里声明