精华内容
下载资源
问答
  • 形参局部变量、局部静态变量的区别
    千次阅读
    2017-09-26 10:54:37

    关于局部变量、局部静态变量的定义

    局部变量:形参和函数体内部定义的变量。

    局部静态变量:将局部变量定义为static类型。

    三者区别

    1.形参是一种自动对象,是由传递函数的实参进行初始化,作用域仅仅是在所在函数体内有用,函数终止,则形参也被销毁。

    2.局部变量的生命周期由其定义方式决定,定义在函数体外的变量作用于整个程序的执行过程,定义在函数体内的作用于此函数执行的过程中。

    3.静态局部变量在第一次被初始化之后直到程序结束才被销毁。

    更多相关内容
  • 一.形参是一种自动对象,函数...局部静态变量比较特殊,它的生命周期贯穿函数调用及之后的时间,局部静态变量对应的对象成为局部静态对象,他的生命周期从定义语句开始,知道程序结束 四.Example #include<iostr...

    一.形参是一种自动对象,函数开始时为形参申请内存空间,调用函数时提供的实参初始化形参对应的自动对象

    二.普通变量对应的自动自动对象,定义变量的语句出创建自动对象,所在块结束,该变量也就结束

    三.局部静态变量比较特殊,它的生命周期贯穿函数调用及之后的时间,局部静态变量对应的对象成为局部静态对象,他的生命周期从定义语句开始,知道程序结束

    四.Example

    #include<iostream>
    using namespace std;
    
    double myPlus(double val_first,double val_second){
      double result = val_frist_value_second;
    static unsigned count= 0;
    ++count;
    count<<"该函数已经累计执行了"<<count<<"次"<<endl;
    return result
    
    }
    
    int main(){
        double num_1,num_2;
    count << "请输入两个浮点数:";
    while(cin>>num_1>>num_2){
        cout<<num_1<<"与"<<"的求值结果"<<myPlus(num_1,num_2)<<endl;
    }
    return 0;
    }
    
    }

     

    展开全文
  • 函数体内的局部变量又分为普通局部变量静态局部变量,对于形参和普通局部变量来说,当函数的控制路径经过变量定义语句时创建该对象,当到达定义所在的块末尾时销毁它。我们把只存在于块执行期间的对象称为自动对象...

    形参和定义在函数体内部的变量统称为局部变量,它们对函数而言是局部的,仅在函数的作用域内可见。函数体内的局部变量又分为普通局部变量和静态局部变量,对于形参和普通局部变量来说,当函数的控制路径经过变量定义语句时创建该对象,当到达定义所在的块末尾时销毁它。我们把只存在于块执行期间的对象称为自动对象。这几个概念的区别是:

    • 形参是一种自动对象,函数开始时为形参申请内存空间,我们用调用函数时提供的实参初始化形参对应的自动对象。
    • 普通变量对应的自动对象也容易理解,我们在定义该变量的语句处创建自动对象,如果定义语句提供了初始值,则用该值初始化;否则,执行默认初始化。当该变量所在的块结束后,变量失效。
    • 局部静态变量比较特殊,它的生命周期贯穿函数调用及之后的时间。局部静态变量对应的对象称为局部静态对象,它的生命周期从定义语句处开始,直到程序结束才终止。

    代码助解:

    #include<iostream>
    using namespace std;
    double myAdd(double val1,double val2){
    	double resul = val1+val2;
    	static unsigned iCnt = 0;//静态局部变量(贯穿程序始终)
    	++iCnt;
    	cout<<"该函数共执行了"<<iCnt<<"次"<<endl;
    	return resul;
    }
    
    int main(){
    	double num1,num2; //普通局部变量
    	cout<<"请输入两个数:"<<endl;
    	while(cin>>num1>>num2){
    		cout<<"求和结果为:"<<myAdd(num1,num2)<<endl; 
    	}
    	return 0;
    }

    输出结果:

    请输入两个数:
    2.4
    3.4
    该函数共执行了1次
    求和结果为:5.8
    33
    33
    该函数共执行了2次
    求和结果为:66
    43
    34
    该函数共执行了3次
    求和结果为:77
    ^Z
    请按任意键继续. . .

    展开全文
  • (2)形参变量属于被调函数的局部变量,实参变量属于主调函数的局部变量。 (3)允许在不同的函数中使用相同的变量名,但它们代表不同的对象,占用不同的存储单元,互不干扰。 (4)在复合语句中也可以定义变量,但...

    一、变量按作用域范围分类

    局部变量:在函数内定义的变量,作用域限于函数内。

    说明:(1)主函数定义的变量不能再其他函数中使用,主函数也不能使用其他函数定义的变量。
    (2)形参变量属于被调函数的局部变量,实参变量属于主调函数的局部变量。
    (3)允许在不同的函数中使用相同的变量名,但它们代表不同的对象,占用不同的存储单元,互不干扰。
    (4)在复合语句中也可以定义变量,但其作用域只能在复合语句内。
    全局变量:在函数外定义的变量,它的作用域是从变量定义开始,到程序文件的末尾。如果在定义点前的函数要使用该外部变量,要使用关键字extern。
    说明:(1)全局变量由于一个文件中所有函数都能引用全局变量的值,因为在一个函数中能够改变了变量的值会对其他函数产生影响,带来不安全性,并且一直占用存储空间,所以不建议用
    (2)全局变量和局部变量同名时,在函数中全局变量隐藏,局部变量起作用。
    实例:

    #include <stdio.h>
    void gx();
    void gy();
    int main()
    {
    	extern int x,y;				///用extern将外部变量的作用域扩展到前面
    	printf("1:x=%d,y=%d\n",x,y);
    	y=246;
    	gx();
    	gy();
    	return 0;
    }
    void gx()
    {
    	extern int x,y;				//用extern将外部变量的作用域扩展到前面
    	x=135;
    	printf("2:x=%d,y=%d\n",x,y);
    }
    int x,y;						//定义外部变量
    void gy()
    {
    	printf("3:x=%d,y=%d\n",x,y);
    

    二、变量按生存周期分类

    动态变量:动态变量在函数调用时分配存储空间,函数调用结束后释放存储空间。它可以是函数的形参,局部变量,函数调用时的现场保护和返回地址。
    静态变量:在运行期间由系统分配固定的存储空间,在静态存储区的变量。它可以是全局变量,也可以是局部变量。

    几个关键字:

    1. auto:动态变量,一般可省略。
    2. static:静态变量,分为静态局部和静态全局。
      (1)静态局部变量:它和局部变量的区别在于函数退出时,变量始终存在,但不能被其他函数使用,当再次进入该函数时,能保存上次的结果继续使用。如果不赋初值,则自动赋初值0或空字符。
      (2)静态全局变量:只在定义它的源文件中可见,在其他源文件中不可见。它和全局变量的区别是,全局变量可以使用关键字extern被其他源文件使用,而静态全局变量不能。
    3. register:寄存器变量,不存入内存,直接保存在CPU内的寄存器中,提高执行速度。一般把使用最频繁的变量定义为register变量,如循环变量。它不能是静态变量,只能是动态变量。
      例如:
    {
    	register int i;
    	for(i=0;i<n;i++)
    	{
    		...
    	}
    	...
    }	
    

    三、按函数能否被其他源文件使用,分为内部函数和外部函数

    内部函数: 只能被本程序文件调用,和其他文件中的同名函数互不干扰。使用关键字static+函数。例如:

    static int max(int a,int b)
    {
    ...
    }
    

    外部函数: 可以被其他文件调用,使用关键字extern+函数,如果省略extern,则默认为外部函数。例如:

    extern int fun(int x,int y)
    {
    ...
    }
    

    实例:

    #include <stdio.h>
     
    void func();//函数声明,主要是因为被调用的函数定义写在了main函数后面了
     
    int n = 1; //全局变量
     
    int  main(void)
    {
        static int a; // 静态局部变量,但静态局部变量只在定义它的函数中可见,并且只初始化一次
        int b = -10; // 局部变量
     
        printf("main:   a=%d,   b=%d,   n=%d\n",a,b,n);
     
        b += 4;
     
        func();
     
        printf("main:   a=%d,   b=%d,   n=%d\n",a,b,n);
        n += 10;
     
        func();
        printf("main:   a=%d,   b=%d,   n=%d\n",a,b,n);
     
    }
    void func()
    {
        static int a = 2; // 静态局部变量
        int b = 5; // 局部变量
        a += 2;
        n += 12;
        b += 5;
       printf("func:   a=%d,   b=%d,   n=%d\n",a,b,n);
    }
    

    运行结果:
    在这里插入图片描述
    结果分析:

    首先明确main函数和func函数里面都有静态局部变量a和局部变量b,由于它们的固有性质,它们都只在定义它的函数里有效,所以它们互不干扰,所以只要在本函数里分析即可,而全局变量n,在main和func函数里都有效,所以分析它的值应该考虑n在这两个函数里的变化

    展开全文
  • 形参局部变量静态局部变量的差别  从本质上说,三者均属于局部作用域中的变量,其中局部变量又可以分为普通(非静态局部变量静态局部变量。它们的差别: 作用域:形参的作用域为整个函数体;而普通(非...
  • (1) 形参的作用域为整个函数体,而普通(非静态局部变量静态局部变量的作用域为:从定义处到包含该变量定义的块的结束处。 (2) 形参由调用函数时所传递的实参初始化;而普通(非静态局部变量和...
  • 全局变量,局部变量静态变量,动态变量。
  • for=pc1.java中成员变量,局部变量静态变量的辨析Java中的变量大致分为 成员变量 和 局部变量 两大类。成员变量:在类体里面定义的变量称为成员变量;如果该成员变量有 static 关键字修饰,则该成员变量称为静态...
  • c语言中形参与实参: 形参 form parameter ...//在函数中,形参就可以当作是一个局部变量。 if ( a>b ) return a; else return b; } 函数调用 int main() { int a=3,b=5 ; printf( "max=%d\n" , max(a,b) )
  • 1、形参和实参 1.1 形参的含义及使用 1.2 实参的含义及使用 2、局部变量和全局变量 2.1 变量作用域的概念 2.2 局部变量 2.3 全局变量 2.4 修改全局变量值
  • C语言--静态局部变量

    千次阅读 2020-10-05 09:14:29
    静态局部变量也是定义在函数内部的,静态局部变量定义时前面要加static关键字来标识,静态局部变量所在的函数在多调用多次时,只有第一次才经历变量定义和初始化,以后多次在调用时不再定义和初始化,而是维持之前上...
  • C语言函数的形参和实参

    千次阅读 2021-05-20 14:41:20
    原标题:C语言函数的形参和实参上一个例程中在进行函数调用的时候,不需要任何参数传递,所以函数定义和调用时括号内都是空的,但是更多的时候我们需要在主调函数和被调用函数之间传递参数。在调用一个有参数的函数...
  • 函数中常用到形参局部变量静态局部变量(static),那三者的区别是什么?
  • 目录1 成员变量、局部变量静态变量2 静态变量的特点及注意事项1 特点2 注意事项3 什么情况下使用静态变量3 总结 1 成员变量、局部变量静态变量 成员变量:在类中且在方法外定义的变量称为成员变量; 局部变量:...
  • 1.局部变量定义:在成员方法中定义的...(方法中的形参也可以作为局部变量)例:public void method1() { //n,i均为局部变量 int n; for(int i=0;i&lt;5;i++) { System.out.println("*"); } ...
  • 区分静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)变量的分类来看 静态变量、动态变量、内部变量(局部变量)、外部变量(全局...
  • 1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 ...静态局部变量具有局部作用域
  • 在一个函数内部定义的变量(包括函数形参)是局部变量。 全局变量 在函数外定义的变量是局部变量静态变量 静态全局变量 在全局变量前加static修饰。 静态局部变量局部变量前加static修饰。 动态对象 ...
  • 形参局部变量相同且局部变量有赋值时,局部变量的赋值会覆盖形参的值。 function fn ( a ) { console . log ( a ) ; // 1 console . log ( arguments [ 0 ] ) ; // 1 var a = 2 ; ...
  • 一:局部变量、全局变量、静态存储、动态存储关系 变量的分类: ①从空间上分配:从变量的作用域可以分成:局部变量和全局变量。 ②从变量的存在时间(生存周期)可以分成:静态存储和动态存储。 局部变量...
  • 目录 1、java中的变量与数据类型 2、思考 3、例子: 3.1、分析: ...1、java中的变量与数据类型 ...变量是一个容器,用来装什么的呢?装内存地址,这个内存地址对应的是内存中某个数据。...局部:在.
  • 1、类体由2部分构成:  类成员变量和类成员方法 类成员变量(也可以叫全局变量) 在方法体外部声明的变量 作用域是整个类 局部变量 在方法体内部声明的变量 作用域是在本
  • 1.形参与实参C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。1.1形参(形式参数)在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收...
  • 1、全局变量: 定义在函数内部的变量叫局部变量(函数的形参也是局部变量; 2、局部变量:定义在所有函数的外面的变量叫全局变量; 3、静态变量:全局变量都是静态变量,局部变量在定义时加了关键字“static”,则...
  • 成员变量、类变量(静态变量)、局部变量的区别

    千次阅读 多人点赞 2017-08-03 20:31:04
    如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员变量,必须使用关键字this [java] view plain copy class People {   String name = "类体重定义的name";
  • 原博主:https://blog.csdn.net/21aspnet/article/details/2560072变量的属性 1、变量的分类l 根据作用域:可分为全局变量和局部变量。l 根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的...
  • 在一个函数内部定义的变量(包括函数形参)是局部变量。 全局变量 在函数外定义的变量是局部变量静态变量 静态全局变量 在全局变量...
  • 1.局部变量动态储存) 1、仅能在它所定义的语句块内有效 例如: 第一个x,为零的作用域为定义它的语句块作用域(红色格格),里面的为橙色格格。 2、作用域较小的局部变量隐藏作用域较大的局部变量 例如:上图里...
  • 局部变量保存在动态数据区的栈中,只有在所在函数被调用时才动态地为变量分配存储单元。  1).主函数main中定义的变量也只在主函数中有效.  2).不同函数中可以使用名字相同的变量,它们代表不同的对象,互不干扰.
  • 一、 静态变量和成员变量的区别: (1):所属不同:  静态变量:属于类,也称为类变量。  成员变量:属于对象,也称为对象变量或实例变量。 (2):在内存中的位置不同:  静态变量:存储于方法区的静态区。  成员...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,187
精华内容 20,074
关键字:

形参是动态局部变量还是静态

友情链接: CSharpsocket-design.rar