精华内容
下载资源
问答
  • 形参只是局部变量
    2022-07-15 09:37:15
         var a=1
         function fn(a){
           a=a+1 //此时的a是局部的a,形参a等同于在函数里又var了一个a
           console.log(a)//2
         }
         fn(a)
         console.log(a)//1 函数里的a已经变为局部变量无法改变外部全局变量a

        var a=1;
          function abc(b){
            a++; //此时a用的是全局变量的a,因为函数内没有声明a
            console.log(b);//1 形参b是等同于在函数内var了一个b,是局部变量
            console.log(a);//2 
          }
          abc(a); //实参a传的是a的值1
          console.log(a); //2
          console.log(b)// b is not defined 

    函数的形参都是局部变量

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

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

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

    代码助解:

    #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
    请按任意键继续. . .

    展开全文
  • 一级指针做形参:首先一定要明白形参和你传递参数的那个实参是两个不同的变量,即使同名也还依然不同。二级指针做形参:二级指针也是传值,但是他指向的地址是个一维指针。
  • 实参、形参局部变量和全局变量

    千次阅读 2020-09-15 16:53:39
    目录实参和形参实参数据传递函数调用过程形参实参和形参的关系局部变量和全局变量局部变量局部变量的作用域说明:全局变量全局变量说明: 实参和形参 实参 实际参数简称“实参”。在调用有参函数时,函数名后面括号...

    实参和形参

    实参

    实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参可以是常量、变量或表达式。

    在调用有参函数时,主调函数和被调函数之间有数据传递关系。在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”(简称“实参”)。

    实参可以是常量、变量或表达式, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

    数据传递

    在调用函数过程中,系统会把实参的值传递给被调用函数的形参。或者说,形参从实参得到一个值。该值在函数调用期间有效,可以参加该函数中的运算。

    在调用函数过程中发生的实参与形参间的数据传递,常称为“虚实结合”。

    函数调用过程

    1. 函数的形参列于函数声明中,在函数定义的函数体内使用。在未出现函数调用时,形参不占内存中的存储单元;当函数调用时,形参(任何种类的)是一类将被填充的空白或是占位符。
    2. 将实参的值传递给形参。当函数被调用时,实参列在函数名后面的括号里。执行函数调用时,实参被传递给形参。
    3. 在执行函数期间,由于形参已经有值,可以利用其进行相关运算。
    4. 通过return语句将函数值带回到主调函数。
    5. 调用结束,形参单元被释放。实参单元仍保留并维持原值(值传递)。

    形参

    全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。

    形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。

    没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。

    实参和形参的关系

    1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。
    2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
    3. 实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。
    4. 在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

    局部变量和全局变量

    局部变量

    局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。

    局部变量的作用域是定义该变量的函数或定义该变量的复合语句。局部变量的生存期是从函数被调用的时刻算起到函数返回调用处的时刻结束。

    int f1(int a)
    {
    int b,c;
    ……
    }a,b,c作用域
    main()
    {
    int m,n;
    }

    在函数f1内定义了三个变量,a为形参,b,c为一般变量。在f1的范围内a,b,c有效,或者说a,b,c变量的作用域限于f1内。m,n作用域 m,n的作用域限于main函数内。

    局部变量的作用域说明:

    1. 主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。这一点是与其它语言不同的,应予以注意。
    2. 形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
    3. 允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。形参和实参的变量名都为n,是完全允许的。
    4. 在复合语句中也可定义变量,其作用域只在复合语句范围内。

    全局变量

    全局变量也称外部变量,它是在函数外部定义的变量。它不属于哪一个函数,而是属于一个源程序文件:其作用域是整个源程序。

    几乎程序中的所有函数都能使用全局变量,客观上全局变量就起到了在函数间传递数据的作用,甚至可以减少形参和实参的数量。当然在享用它的好处时,也要慎重,避免全局变量过多带来的降低函数通用性及存储空间的浪费。

    全局变量说明:

    1. 全局变量从程序运行起即占据内存,在程序整个运行过程中可随时访问,程序退出时释放内存。与之对应的局部变量在进入语句块时获得内存,仅能由语句块内的语句访问,退出语句块时释放内存,不再有效。
    2. 局部变量定义后不会自动初始化,除非程序员指定初值。全局变量在程序员不指定初值的情况下自动初始化为零。
    3. 在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。
    int a,b;
    void f1()
    {
    ……
    }
    float x,y;
    int f2()
    {
    ……
    }
    main()
    {
    ……
    }

    从上例可以看出a、b、x、y 都是在函数外部定义的外部变量,都是全局变量。但x,y定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。a,b定义在源程序最前面,因此在f1,f2及main内不加说明也可使用。

    展开全文
  • 一.形参是一种自动对象,函数...局部静态变量比较特殊,它的生命周期贯穿函数调用及之后的时间,局部静态变量对应的对象成为局部静态对象,他的生命周期从定义语句开始,知道程序结束 四.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;
    }
    
    }

     

    展开全文
  • 局部变量形参和函数体内部定义的变量。 局部静态变量:将局部变量定义为static类型。 三者区别 1.形参是一种自动对象,是由传递函数的实参进行初始化,作用域仅仅是在所在函数体内有用,,函数终止,则形参也被...
  • 形参局部变量相同且局部变量有赋值时,局部变量的赋值会覆盖形参的值。 function fn ( a ) { console . log ( a ) ; // 1 console . log ( arguments [ 0 ] ) ; // 1 var a = 2 ; ...
  • 其实这个题目考了很多知识点,最后就是参数传递中引用类型的用法,这个也是ECMAScript中基础的一个难点,结合前面的一些,变量提升,重复宣告,形参局部变量同名,算是解释清楚了。 若有错误,欢迎指出。
  • 举个简单的函数例子 function getNum(num){  num =100;  console.log(num); ...结果是:100和Uncaught ...虽然在函数中声明了一个隐式全局变量,可是函数的形参跟隐式全局变量的名字是相同的,而函数...
  • 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) 形参的作用域为整个函数体,而普通(非静态)局部变量和静态局部变量的作用域为:从定义处到包含该变量定义的块的结束处。 (2) 形参由调用函数时所传递的实参初始化;而普通(非静态)局部变量和...
  • 一.类和对象的区别类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体...局部变量和成员变量区别1.定义的位置不同定义在类中的变量是成员变量定义在方法中或者{}语句里面的变量是局部变量2.在内存中的...
  • 1>f:\mycode\cpptest\main.cpp(68): warning C4189: “nRet”: 局部变量已初始化但不引用 编译器认为,既然我们已经声明/定义了某变量,那我们就有使用它的意图。所以当它检测到我们未对此变量进行实际的使用时,就...
  • 成员变量、局部变量形参 在类中的位置不同 (1)成员变量:类中方法外。 (2)局部变量:方法内部或者方法声明上。 在内存中的位置不同 (1)成员变量:堆内存。 (2)局部变量:栈内存。 生命周期不同 (1)成员...
  • 函数的局部变量、全局变量、形参和实参的关系,要涉及到内存中的一些概念: 1、系统堆栈空间 2、系统堆空间 3、代码区和数据区 堆栈的大致概念和特点: 堆栈在OS中的作用(在函数调用关系中的作用): main( )...
  • 形参局部变量和静态局部变量的差别  从本质上说,三者均属于局部作用域中的变量,其中局部变量又可以分为普通(非静态)局部变量和静态局部变量。它们的差别: 作用域:形参的作用域为整个函数体;而普通(非...
  • 1.形参是一种局部变量,作用域仅限于该函数 2.形参是一种局部变量,它有自己的空间(当函数被调用时,局部变量的空间被临时申请,同时这个空间的数据被赋值成实际参数的值)。当离开定义它的函数时,分配给他们的...
  • 今天在回顾学习java基础部分内容面向对象编程的时候整理了一些自己容易混淆的知识点(形参,实参,成员变量,局部变量,构造方法) public class temp{ int v;//此处 v和a成员变量可以被修饰符修饰如(public ,...
  • 函数**(包括main函数)的形参和在该函数里定 义的变量都被称为该函数的局部变量**(local variable)。不同函数的局部变量相互独 立,即 无法访问其他函数的局部变量。需要注意的是,局部变量的存储空间是临时分配...
  • 1、形参和实参 1.1 形参的含义及使用 1.2 实参的含义及使用 2、局部变量和全局变量 2.1 变量作用域的概念 2.2 局部变量 2.3 全局变量 2.4 修改全局变量值
  • C语言函数的形参和实参

    千次阅读 2021-05-20 14:41:20
    原标题:C语言函数的形参和实参上一个例程中在进行函数调用的时候,不需要任何参数传递,所以函数定义和调用时括号内都是空的,但是更多的时候我们需要在主调函数和被调用函数之间传递参数。在调用一个有参数的函数...
  • 函数中常用到形参局部变量、静态局部变量(static),那三者的区别是什么?
  • #include int d(int s){  int s = 9;  return s; } int main(void) {  printf("test");...提示出错,形参局部变量一样,c语言的函数执行时形参先入栈,然后是eip,ebp等指针入栈,局部变量最后入栈。
  • 2、默认情况下,局部变量的生命期局限于所在函数的每次执行期间。 3、静态局部变量的生命期跨越了该函数的多次调用,这种对象一旦被创建,在程序结束前都不会被撤销。 int count_calls_static() { static int
  • 首先,实现一个“交换两个整形变量的值”的函数。由结果可知,这样做并不能真正完成交换数据,手工分析如下:由上图可见,Exchange()函数并没有更改main()函数中num1和num2的值。在内存中的解释如下:解释:先将...
  • 全局变量与局部变量在内存中的区别(注意)初始化 局部变量和全局变量形式参数 (与全局变量同名时 ?) 何为作用域 ? 任何一种编程中,作用域是程序中定义的变量所存在的区域,超过该区域变量就不能被访问。C 语言...
  • 关于C语言函数形参(全局变量)的几点说明

    万次阅读 多人点赞 2019-03-01 15:06:28
    1.函数的形参属于局部变量,仅在定义的函数内有效,函数返回后失效。 2.当在一个函数(比如main函数)内调用另外一个函数时,例如: void fun(unsigned char x) { x = x+1; } int main(void) { unsigned ...
  • 第一个例子是一般函数,只是把传入的形参(参数)输出在主控台: function foo ( a, b ) { console .log(a, b); //1, 10 } foo( 1 , 10 ); a与b改为用arguments,这很正常的用法如下: function ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,006
精华内容 41,202
热门标签
关键字:

形参只是局部变量