精华内容
下载资源
问答
  • 函数形参和实参

    2021-05-13 19:40:56
    C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。...形参和实参的区别联系形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量

    C语言函数的参数会出现在两个地方,分别是函数定义处和函数调用处,这两个地方的参数是有区别的。
    形参(形式参数)在函数定义中出现的参数可以看做是一个占位符,它没有数据,只能等到函数被调用时接收传递进来的数据,所以称为形式参数,简称形参。实参(实际参数)函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以称为实际参数,简称实参。形参和实参的功能是传递数据,发生函数调用时,实参的值会传递给形参。形参和实参的区别和联系形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

    展开全文
  • 本文主要介绍了jquery封装插件时匿名函数形参和实参的写法解释。具有很好的参考价值,下面跟着小编一起来看下吧
  • 【C++】c++之函数形参和实参

    千次阅读 2019-03-24 13:00:00
    c++之函数形参和实参 c++之函数形参和实参讲解 1、非地址型参数 在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。 不多说,先看代码: ...

    c++之函数形参和实参

    c++之函数形参和实参讲解

    1、非地址型参数

    在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。

    不多说,先看代码:

     

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 void changeNumber(int num){
     6     num ++;
     7 }
     8 
     9 
    10 int main(){
    11     int num = 9;
    12     //猜猜num的值是多少
    13     changeNumber(num);
    14     cout << "num = " << num << endl; 
    15     return 0;
    16 }

     

    我们从上面的代码可以看到,我们通过一个函数模块对num的值进行了修改,但是最后的输出会是多少呢,是10还是9呢。

    我们来看一下控制台的输出结果:

    输出结果显示的9,而不是10,那么这是为什么呢,在这之前我们先看看函数体内部的值是多少。

    我们可以看到函数体内部的num的值是10,而主函数内的num依旧是9,并没有改变。

    这是因为,传入给changeNumber(num);函数模块的num是一个形参,因为,函数的返回值是一个void类型,也就是无类型,那么该函数模块只是执行函数模块内部的代码并不会返回任何的值。但是就是说,虽然都是一个叫做num的变量,但是在changeNumber(num);体内,num的作用域仅仅在函数模块体内有用,一旦函数模块执行完毕,那么num的作用域也就结束了。实际上是内存中有两块不同的内存空间,他们的变量名都是num,但是实际上的值确实不一样的。如下图所示:

    从图中我们可以看到主函数和自定义函数模块中的num变量的内存地址是不一样的。

    但是如果我们换一种写法那就是截然不同的结果。

    看代码:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 void changeNumber(int &num){ //修改的地方  加了一个&符号
     6     num ++;
     7     cout << &num <<" in the model : num = " << num << endl;
     8 
     9 }
    10 
    11 
    12 int main(){
    13     int num = 9;
    14     //猜猜num的值是多少
    15     changeNumber(num);
    16     cout << &num << " num = " << num << endl;
    17     return 0;
    18 }

    从代码中我们可以看到,我仅仅只是在changeNumber()函数模块的形参部分修改了一点点,也就是加了一个引用的符号,取地址的意思,这样的结果将是截然不同,

    看运行结果图:

    从结果图中,我们可以看到,主函数和函数模块内部的变量num都是同一个变量(内存地址一样就是一样的变量),且最终在主函数中的num和函数模块里面的num的值都发生了改变。

    原因:在非数组型形参中,形参只是实参的一份拷贝,也就是说是一个局部变量,通过变量对该变量赋值改变其值,只是在一个局部作用域中对变量进行改变,但是全部的变量(变量名相同)并没有改变。但是数组型形参是与此不同。

    2.地址型参数

    当我们给自定义的函数模块传入的是一个数组时,那么传入的就是当前数组的第一个元祖的地址,因为在内存中,数组就是一串连续的地址空间。先来看一段代码:

    #include <iostream>
    
    using namespace std;
    
    void changeNumber(int &num){
        num ++;
        cout << &num <<" in the model : num = " << num << endl;
    
    }
    
    
    
    
    void changeArray(int arrayInt[], int len){ //此时传入的是数组的第一个元素的地址,类似指针操作
        /*
        if(len > sizeof(arrayInt) / sizeof(int)){
            cout << "输入的数组大小越界。" << endl;
        }
        */for (int i=0; i < len;i++){
            arrayInt[i] = i;
        }
    }
    
    
    
    void printArray(int arrayyInt[], int len){
        /*
        cout << "len= " << len<<endl;
        cout << "sizeof(arrayInt) / sizeof(int)= " << sizeof(arrayInt) / sizeof(int) <<endl;//输出为1
    
        因为传入的数组是一个头元素的地址也即指针地址,所以只有单位长,也就是一个int单位长,所以得到的值为1
        在main函数体内得到的值为真实的数组的大小长度
    
    
    
        if(len > (signed)(sizeof(arrayInt) / sizeof(int)) ){  //前者是有符号整数,后者是无符号整数
    
            cout << "输入的数组大小越界。" << endl;
        }
        */
        //打印
    
        cout << "-----print-----" <<endl;
        for (int i=0;i<len;i++){
            cout << arrayyInt[i] <<endl;
        }
        cout << "-----print-----" <<endl;
    }
    
    int main()
    {
    
        int arrayInt[5]{2,4,55,23,1};//原始数组的数值
        cout << "原始输出:" <<endl;
        cout << "arrayInt=" <<endl;
        printArray(arrayInt,5);
        //开始改变
    
        changeArray(arrayInt,sizeof(arrayInt) / sizeof(int));
        cout << "改变之后:"<<endl;
        cout <<"arrayInt=" <<endl;
        printArray(arrayInt,sizeof(arrayInt) / sizeof(int));
        return 0;
    }

    运行结果如图所示:

    从图中可以看到,同样的操作,对于int型的整数num和对于只能存放int型的数组来讲,c++对其做的改变是不一样的。这里对形参的操作其实也是对实参的操作,因为如果对数组实参进行一份拷贝的话,会增加很大的内存消耗,所以c++就直接修改了实参值。

    当然对于数组的操作,还有一种指针的传参方式,先看代码:

    1 void printPointArray(int* arrayInt,int len){
    2     for(int i=0;i<len;i++){
    3         cout << *(arrayInt+i) << endl;
    4     }
    5 }

    从代码中我们看到,我们只是修改了打印数组的一个自定义函数,数组的参数传递有两种方式,一种是指针的方式:void printPointArray(int* arrayInt,int len),另一种是数组的方式:void printArray(int arrayInt[],int len),不管哪一种,都是传入一个数组的首地址。

     

    posted @ 2019-03-24 13:00 东京的樱花在巴黎飘下 阅读(...) 评论(...) 编辑 收藏

    展开全文
  • JavaScript函数形参和实参的区别 在《JavaScript权威指南》中这样定义: 参数有形参(parameter)和实参(argument)的区别,形参相当于函数中定义的变量,实参是在运行时的函数调用时传入的参数。 说明白就是,形参...

    JavaScript函数形参和实参的区别

    在《JavaScript权威指南》中这样定义:
    参数有形参(parameter)和实参(argument)的区别,形参相当于函数中定义的变量,实参是在运行时的函数调用时传入的参数。
    说明白就是,形参就是函数声明时的变量,实参是我们调用该函数时传入的具体参数。
    再说的直白一些就是:形参,顾名思义形式上的参数。实参,也就是实际的参数。

    例子:
    声明函数add时a,b就是形参。调用函数add(1,2) 1,2就是实参。

    function add(a,b) {
        return a + b
    };
    add(1,2);
    console.log(add) // 3
    

    function test(形参){
    // 定义函数时的参数叫做形参,如字面意思形式上的参数并非真的是本身
    alert(形参)
    }
    test(实参)// 调用时给的参数称为实参 就是说真正的参数
    像小学数学一样设一个未知数X 至于X到底为多少是我们给的算法
    在这里我在附张图 ,你参考理解一下在这里插入图片描述

    展开全文
  • c++之函数形参和实参

    千次阅读 2019-03-24 13:00:00
    c++之函数形参和实参讲解 1、非地址型参数 在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。 不多说,先看代码: 1 #include <...

    c++之函数形参和实参讲解

    1、非地址型参数

    在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。

    不多说,先看代码:

     

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 void changeNumber(int num){
     6     num ++;
     7 }
     8 
     9 
    10 int main(){
    11     int num = 9;
    12     //猜猜num的值是多少
    13     changeNumber(num);
    14     cout << "num = " << num << endl; 
    15     return 0;
    16 }

     

    我们从上面的代码可以看到,我们通过一个函数模块对num的值进行了修改,但是最后的输出会是多少呢,是10还是9呢。

    我们来看一下控制台的输出结果:

    输出结果显示的9,而不是10,那么这是为什么呢,在这之前我们先看看函数体内部的值是多少。

    我们可以看到函数体内部的num的值是10,而主函数内的num依旧是9,并没有改变。

    这是因为,传入给changeNumber(num);函数模块的num是一个形参,因为,函数的返回值是一个void类型,也就是无类型,那么该函数模块只是执行函数模块内部的代码并不会返回任何的值。但是就是说,虽然都是一个叫做num的变量,但是在changeNumber(num);体内,num的作用域仅仅在函数模块体内有用,一旦函数模块执行完毕,那么num的作用域也就结束了。实际上是内存中有两块不同的内存空间,他们的变量名都是num,但是实际上的值确实不一样的。如下图所示:

    从图中我们可以看到主函数和自定义函数模块中的num变量的内存地址是不一样的。

    但是如果我们换一种写法那就是截然不同的结果。

    看代码:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 void changeNumber(int &num){ <-修改的地方  加了一个&符号
     6     num ++;
     7     cout << &num <<" in the model : num = " << num << endl;
     8 
     9 }
    10 
    11 
    12 int main(){
    13     int num = 9;
    14     //猜猜num的值是多少
    15     changeNumber(num);
    16     cout << &num << " num = " << num << endl;
    17     return 0;
    18 }

    从代码中我们可以看到,我仅仅只是在changeNumber()函数模块的形参部分修改了一点点,也就是加了一个引用的符号,取地址的意思,这样的结果将是截然不同,

    看运行结果图:

    从结果图中,我们可以看到,主函数和函数模块内部的变量num都是同一个变量(内存地址一样就是一样的变量),且最终在主函数中的num和函数模块里面的num的值都发生了改变。

    原因:在非数组型形参中,形参只是实参的一份拷贝,也就是说是一个局部变量,通过变量对该变量赋值改变其值,只是在一个局部作用域中对变量进行改变,但是全部的变量(变量名相同)并没有改变。但是数组型形参是与此不同。

    2.地址型参数

    当我们给自定义的函数模块传入的是一个数组时,那么传入的就是当前数组的第一个元祖的地址,因为在内存中,数组就是一串连续的地址空间。先来看一段代码:

    #include <iostream>
    
    using namespace std;
    
    void changeNumber(int &num){
        num ++;
        cout << &num <<" in the model : num = " << num << endl;
    
    }
    
    
    
    
    void changeArray(int arrayInt[], int len){ //此时传入的是数组的第一个元素的地址,类似指针操作
        /*
        if(len > sizeof(arrayInt) / sizeof(int)){
            cout << "输入的数组大小越界。" << endl;
        }
        */for (int i=0; i < len;i++){
            arrayInt[i] = i;
        }
    }
    
    
    
    void printArray(int arrayyInt[], int len){
        /*
        cout << "len= " << len<<endl;
        cout << "sizeof(arrayInt) / sizeof(int)= " << sizeof(arrayInt) / sizeof(int) <<endl;//输出为1
    
        因为传入的数组是一个头元素的地址也即指针地址,所以只有单位长,也就是一个int单位长,所以得到的值为1
        在main函数体内得到的值为真实的数组的大小长度
    
    
    
        if(len > (signed)(sizeof(arrayInt) / sizeof(int)) ){  //前者是有符号整数,后者是无符号整数
    
            cout << "输入的数组大小越界。" << endl;
        }
        */
        //打印
    
        cout << "-----print-----" <<endl;for (int i=0;i<len;i++){
            cout << arrayyInt[i] <<endl;
        }
        cout << "-----print-----" <<endl;
    }
    
    int main()
    {
    
        int arrayInt[5]{2,4,55,23,1};//原始数组的数值
        cout << "原始输出:" <<endl;
        cout << "arrayInt=" <<endl;
        printArray(arrayInt,5);
        //开始改变
    
        changeArray(arrayInt,sizeof(arrayInt) / sizeof(int));
        cout << "改变之后:"<<endl;
        cout <<"arrayInt=" <<endl;
        printArray(arrayInt,sizeof(arrayInt) / sizeof(int));
        return 0;
    }

    运行结果如图所示:

    从图中可以看到,同样的操作,对于int型的整数num和对于只能存放int型的数组来讲,c++对其做的改变是不一样的。这里对形参的操作其实也是对实参的操作,因为如果对数组实参进行一份拷贝的话,会增加很大的内存消耗,所以c++就直接修改了实参值。

    当然对于数组的操作,还有一种指针的传参方式,先看代码:

    1 void printPointArray(int* arrayInt,int len){
    2     for(int i=0;i<len;i++){
    3         cout << *(arrayInt+i) << endl;
    4     }
    5 }

    从代码中我们看到,我们只是修改了打印数组的一个自定义函数,数组的参数传递有两种方式,一种是指针的方式:void printPointArray(int* arrayInt,int len),另一种是数组的方式:void printArray(int arrayInt[],int len),不管哪一种,都是传入一个数组的首地址。

     

    转载于:https://www.cnblogs.com/jums/p/10587769.html

    展开全文
  • 对于函数形参和实参,我其实也不能说太明白,这里只是我作为一个初学者的一些自我理解,如果有错误,希望大家指出。 在这里我就不去细说形参和实参的概念了,这里的a,b就是实参,而x,y就是形参。 在用整形,浮点型...
  • C语言中函数形参和实参是十分重要的概念,初学者很容易混淆。 形参:顾名思义,形式参数,仅仅是声明了参数的类型参数名称,未实际分配内存赋值。 实参:实际参数,是指函数调用时,实际赋值分配内存空间。 ...
  • 函数参数分为实参和形参形参就是在定义函数时,传递给函数的参数,被称为形参。 实参就是当函数被调用时,传给函数的参数,称为实参。 【例1】以下示例中,参数a和b就是形参,而调用函数中的2,3就是实参。 ...
  • 一.形参出现在函数定义的地方,实参出现在函数调用的地方 二.形参可以包含0,1,多个参数,实参数量与形参...形参决定了形参和实参的交互方式,如果形参是引用类型,则它将绑定到实参上,否则实参将拷贝赋值给形参 ...
  • 参数有形参(parameter)和实参(argument)的区别,形参相当于函数中定义的变量,实参是在运行时的函数调用时传入的参数。 ** 例子:** 声明函数add时,a,b就是形参。调用函数add(1,2) 1,2就是实参。 function ...
  • 实参和形参:实参是形参的初始值,第一个实参初始化第一个形参第二个实参初始化第二个形参依次类推(注意没有规定初始化顺序) 形参是指:函数声明上的变量;实参:是指调用函数时赋予的值。 1、 实参的类型必须于...
  • 函数形参和实参特点

    千次阅读 2015-10-09 10:41:29
    1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。...3. 实参和形参在数量上,类型上
  • 关于函数形参和实参关系的理解

    千次阅读 2017-07-14 09:37:48
    在调用子函数时,形参在非引用的情况下(fun(int &a) ),是通过拷贝实参的值(a = b)来使用的,而不是直接使用实参的值,形参的值的改变,不会影响到实参。普通变量: 函数:void fun(int a); 调用:fun(b)...
  • python函数形参和实参

    千次阅读 2013-12-02 18:16:43
    def fun(x,y):# x,y 形参 if x == y: print x, '=', y else: print x, '!=', y x1 = raw_input("The first var:") x2 = raw_input("The second var:") fun(x1,x2) print '*'*35 print '^'*35 print "冰淇淋...
  • 函数实参和形参 要一 一对应,特别是二维数组时,极易出错。下边列出形参实参对应关系:
  • 参数有形参(parameter)和实参(argument)的区别,形参指的是函数声明时的变量;实参指的是调用该函数时所传的参数。 例:声明函数test(a,b) 时a,b就是形参,调用test(1,2)时1,2就是实参; function test(a,b)...
  • 定义一个形参有多个的函数,并且定义传入不同数量的实参时,其中的db.collection(collectionName).find(){}方法中的attr,skipNumpageSize分别指的是什么 find(collectionName,json1,json2,json3){ if(arguments....
  • 定义函数的三种形式 1.无参函数: def foo(): print('from foo') foo()   2.有参函数 def bar(x, y): print(x, y) bar(1, 2) 3.空函数 def func(): pass 调用函数的三种形式 ...
  • //总结关于二维数组的指针和函数形参实参 //1.指针: **p (*p)[2]都可以指向二维数组 **p是二维指针,系统不知道+1是加多少,(*p)[2]则明确指出每+1是指2(int) //2.实参: function(p , arr) ‘p’指**p (*p)[2]...
  • C语言中函数形参实参的区别

    千次阅读 多人点赞 2019-06-12 10:47:13
    众所周知一个函数有两种参数,即形参和实参。那么究竟什么是形参什么是实参呢? 形参:在定义函数时指定的参数,在未出现函数调用时,他们并不占用内存中的存储单元。只有在发生函数调用时,函数中的形参才被分配...
  • 函数形参实参注意事项: 1.未进行函数调用时,形参并不占内存存储单元。只有调用函数,形参才被分配内存,调用结束形参内存单元被释放。 2.实参可以是常量、变量或表达式,但要求有确定值。 使用print(i,i++);,是...
  • C语言函数-形参和实参

    千次阅读 多人点赞 2019-04-29 09:34:34
    1.形参和实参的概念 形参(也叫形式参数) 在定义函数和函数体的时候使用的参数,他没有数据,可以看做一个占位符,只能等到函数被调用时接收传递进来的数据,所以称为形式参数; 实参(也叫实际参数) 在调用时传递给...
  • 平时写代码时,最好形参/实参类型一致,即形参/实参内存大小一致。 尽管编译的时候warning,由于类型的原因。但指针p的地址还是按位copy到了函数myswap(). 实参无论二进制的数还是地址,都会完成32位的内存复制。...
  • 函数的定义使用中,存在形参和实参这样的概念。假设有如下的函数定义: void func(int a); 此时,定义了一个函数函数名是func;函数的参数是 int a,那么,这就叫做形参;假设函数有如下的调用: int b = ...
  • Javascript函数形参实参

    万次阅读 2016-07-20 14:05:52
    形参,是在定义函数时使用的参数,目的是用来接收调用该函数时传进来的...形参和实参是不同的变量,他们在内存中处于不同的位置,形参函数运行结束时将被释放。主要有两点需要注意的1 . 如果实参是引用类型(objec
  • 函数形参和实参

    2018-12-12 22:37:49
    函数的参数分为形参和实参两种。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用...
  • 形参与实参形参实参形参与实参的关系举例说明(*形参与实参的关系*)二阶指针(*形参与实参的一些应用*) 形参 实参 形参与实参的关系 举例说明(形参与实参的关系) 二阶指针(形参与实参的一些应用) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,819
精华内容 47,127
关键字:

函数的形参和实参