精华内容
下载资源
问答
  • 实参与形参

    2019-05-20 22:08:57
    实参与形参这些C语言中耳目熟详的定义,若是不经常用到的话估计也有可能经常分辨不清。 所谓形参即在定义函数中出现,在未出现函数调用时,他们并不占用内存中的存储单元;当然在发生函数调用时,形参被临时分配...

    实参与形参这些C语言中耳目熟详的定义,若是不经常用到的话估计也有可能经常分辨不清。

    所谓形参即在定义函数中出现,在未出现函数调用时,他们并不占用内存中的存储单元;当然在发生函数调用时,形参被临时分配内存单元,当然一旦调用结束之后就被释放。

    实参:实参是在利用调用函数时所包含的变量。实参向形参的数据传递只能是“值传递‘,单向传递,只能由实参传给形参,而不能由形参传递给实参。在调用结束之后,形参被释放,而实参单元仍保留并维持原值不改变。

    展开全文
  • 函数实参与形参之间的传递

    万次阅读 多人点赞 2018-04-13 23:24:25
    在函数调用这会涉及到形参与实参个两个概念,于是上网查了一下实参与形参的概念。 实参是指在函数调用时,必须有确切的值以便赋给形参的一种参数,它可以为常量,变量,表达式,函数等。 形参是在定义函数名和...

                  在函数调用这会涉及到形参与实参个两个概念,于是上网查了一下实参与形参的概念。

                  实参是指在函数调用时,必须有确切的值以便赋给形参的一种参数,它可以为常量,变量,表达式,函数等

                  形参是在定义函数名和函数体时使用的一种参数,目的是用于接收调用该函数时传递的参数。它只能是变量。

               

                 1,传值调用,顾名思义,就是对值的传递。但它只是对形参里的值发生了变化,并没有对实参的值有任何变化。接下来我用堆栈法来试试解释, 定义一个函数名为exchange的函数,其作用是实现里面的数交换。代码如下:

    #include<stdio.h>

      void  exchange(int one,int another);

      void exchange(int one,int another)   {
          int temp;
          temp=one;
          one=another;
         another=temp;
        }
       void main(void){
        int num1=14,num2=7;
         exchange(num1,num2);
         printf("%d %d\n",num1,num2);
        }

       在主函数定义了两个实参为num1,num2在子函数中定义形参为one,another这种操作等效于one=num1,another=num2。即实参表达式的值在系统堆栈中占用的空间就是与之对应的形参变量的空间。实参先入栈,栈顶指针esp往上飘,即num2先入栈,占据4个字节,接着num1入栈,等效于站在num2上,再占据4个字节,在函数调用时栈底指针ebp移到当前栈顶指针位置,再接着temp入栈,等效于把当前 栈底指针向上的空间分配给了子函数的局部变量即。。。。。。。。。temp,再占据4个字节,函数调用完后恢复到子函数调用之前的栈顶和栈底指针.

      进行temp=one时,等效于把one空间的值赋给temp的空间,即temp为14,
         one=another ,等效于把another空间的值赋给one空间, 即one为7,
         another=temp等效于把temp空间的值赋给another空间,即another为14。
         此刻one和another空间的值分别为7,14但num1和num2空间的值根本就没变。故不能实现交换。

     2,引用调用
        同样的例子用到这个函数中
       void realexchange(int *one,int *another){
             int temp;
             temp=*one;
             *one=*another;
             *another=temp;
          }
         void main(void){
         int num1=14,num2=7;
         realexchange(14,7);

         printf("%d %d\n",num1,num2);


          }
        在主函数定义为这两个实参的取地址即&num1,&num2。这种操作等效于one指向num1,anothor指向num2。如图


        在进行temp=*one时,等效于将one所指空间的值赋给temp的空间,即temp为14;       *one=*another等效于将another所指向的空间的值赋给one所指向的空间,即num1为7;*another=temp等效于把temp空间的值赋给another所指向的空间,即num2为14。这样下来num1与num2的值发生了变化。即转换成功。
     
         总而言之,事实上,形参的空间就是实参表达式的值入栈的空间,它并没有额外的申请空间。若在以后形参表达式的值能够影响到实参的结果时,则实参应该传地址给形参,若不需要形参的表达式来改变实参的值时,则只需要传值给形参即可。。。

    展开全文
  • java的实参与形参

    2020-06-28 21:00:44
    java的实参与形参 形参实参,举个例子public class Example{ int a; public static void main(String args[]){ Example example = new Example(); example.change(example.a); System.out.println(example.a); } ...

    java的实参与形参

    形参和实参,举个例子

    public class Example{
        
        public static void main(String args[]){
        	int a=0;
    		change(a);
            System.out.println(a);
        }
        public static void change(int a){
           a=10;
        }
    }
    

    运行程序后,输出的结果是0,为什么呢,这时候我们就需要知道,调用方法进行传参的时候,分为值传递和引用传递,如果参数的类型是基本数据类型,那么就是值传递,如果是引用数据类型,那么就是引用传递,值传递是实参把自己变量本身存的简单数值赋值给形参.引用传递是实参把自己变量本身存的对象内存地址值赋值给形参,上述代码只是简单的值传递,所以无法改变原本变量的值,我们再看下面的例子。

    public class Test{
    	public static void changeName(Student s){
    	s.name = "tom";
    	}
    	public static void main(String[] args){
    		Student s = new Student();
    		System.out.println(s.name);
    		changeName(s);
    		System.out.println(s.name);
    	}
    }
    class Student{
    	String name="jack";
    }
    

    输出结果为
    jack
    tom
    因为上述代码体现的是一个引用传递,方法直接操作了传递的地址,所以值能成功改变。
    如果把上述两块代码中change和changeName方法的参数列表的参数名改成别的,结果是不会变的。例如public static void change(int a)public static void change(int b)public static void changeName(Student s)public static void changeName(Student stu)。代码的执行结果依然不会变,这说明了无论是形参还是实参,这个变量名是可以随便写的,我们不关心这个变量,而是关系它的类型以及它所接受的值。

    展开全文
  • 函数什么是函数?函数是带名字的代码块,用于完成具体的工作。写出一个函数后,就可以一直...即是下一节讲到的形参1 #向函数传递信息23 def greet_user(username):4 """显示简单的问候语"""5 print("hello," + usern...

    函数

    什么是函数?函数是带名字的代码块,用于完成具体的工作。写出一个函数后,就可以一直调用。

    定义函数,函数的基本组成:

    1180496-20190215210520391-980864988.png

    1716749-20200709103648835-712913261.png

    1.1 向函数传递参数

    向函数中传递任意参数,这样打印出的结果就可以根据自己的选择,做出改变。即是下一节讲到的形参

    copycode.gif

    1 #向函数传递信息

    2

    3 def greet_user(username):

    4 """显示简单的问候语"""

    5 print("hello," + username + "!" )

    6

    7 greet_user('python')

    copycode.gif

    打印结果:

    1

    hello,python!

    2、形参与实参

    什么是形参?顾名思义,形参就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有意义。相当于变量。

    什么是实参?顾名思义,实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等。

    以上面的例子介绍下什么是形参和实参:

    1180496-20190215212056019-325766908.png

    就是在函数名中定义一个形参,然后在函数调用的时候,给函数名中的形参传递一个实际的参数,这个就变为实参。这样的话执行函数体内容时就会执行对应的操作。

    注意:传入实参时,一定要加上引号,否则会报错。

    greet_user(python)

    NameError: name 'python' is not defined

    3、传递实参(位置实参、关键字实参、默认值、等效的函数调用、避免参数错误)

    使用背景:

    函数定义中可能包含多个实参,而向函数传递实参的方式有很多,位置实参和关键字实参等。

    3.1、位置实参

    调用函数时,必须将函数调用中的每个实参都关联到函数定义中的一个形参。关联方式是基于实参的顺序,这被称作位置实参

    copycode.gif

    1 #位置实参

    2 def describe_pet(animal_type,pet_name):

    3 """显示宠物信息"""

    4 print("\nI have a " + animal_type + ".")

    5 print("My " + animal_type + "'s name is " + pet_name.title() + ".")

    6

    7 describe_pet('dog','harry')

    copycode.gif

    执行结果:

    I have a dog.

    My dog's name is Harry.

    3.1.1 可以多次调用函数

    copycode.gif

    1 def describe_pet(animal_type,pet_name):

    2 """显示宠物信息"""

    3 print("\nI have a " + animal_type + ".")

    4 print("My " + animal_type + "'s name is " + pet_name.title() + ".")

    5

    6 describe_pet('dog','harry')

    7

    8 #可以多次调用

    9 describe_pet("cat",'coo')

    10 describe_pet('pig','echo')

    copycode.gif

    执行结果:

    copycode.gif

    1 I have a dog.

    2 My dog's name is Harry.

    3

    4 I have a cat.

    5 My cat's name is Coo.

    6

    7 I have a pig.

    8 My pig's name is Echo.

    copycode.gif

    3.1.2 实参的位置也很重要,本末倒置可不好

    describe_pet('coo','dog')

    执行结果:

    I have a coo.

    My coo's name is Dog.

    3.2、关键字参数

    关键字实参 是传递给函数的名称:值对。直接将形参与实参关联起来,这样就不存在顺序问题(不会像上一个例子一样出现搞笑的结果)。

    示例:

    copycode.gif

    1 2、关键字实参

    2 def describe_pet(animal_type,pet_name):

    3 """显示宠物信息"""

    4 print("\n关键字实参示例:")

    5 print("I have a " + animal_type + ".")

    6 print("My " + animal_type + "'s name is " + pet_name.title() + ".")

    7

    8 describe_pet(animal_type="dog",pet_name="harry")

    copycode.gif

    执行结果:

    关键字实参示例:

    I have a dog.

    My dog's name is Harry.

    3.3、默认值参数

    在编写函数时,可以给每个形参设定一个固定值,即为默认值。

    在调用函数给形参提供实参时,就使用实参值,否则,使用实参的默认值,因此,给形参指定默认值后,在函数调用中省略相应的实参。

    copycode.gif

    1 #默认值参数

    2 def describe_pet(pet_name,animal_type = 'dog'):

    3 """显示宠物信息"""

    4 print("\n关键字实参示例:")

    5 print("I have a " + animal_type + ".")

    6 print("My " + animal_type + "'s name is " + pet_name.title() + ".")

    7

    8 describe_pet(pet_name="harry")

    copycode.gif

    执行结果:

    1 默认值实参示例:

    2 I have a dog.

    3 My dog's name is Harry.

    注意点:这里把pet_name 放在了前面,原因是在这里还是把它当做是位置参数,如果形参与实参的位置不对应,还是会报错

    如果不想使用默认值参数,也可以在调用函数时,将形参定义一个值,这样函数名中的形参默认值就会被忽略。

    1 describe_pet(animal_type="cat",pet_name="harry")

    3.4、等效的函数调用

    什么叫等效的函数调用,即在函数调用时,无论是使用位置参数还是关键字参数、默认值参数、等到的结果都是一样的,这样的方式就是等效调用。

    示例:

    1 #函数等效调用

    2 #一个名为harry 的小狗

    3 def describe_pet(pet_name,animal_type = 'dog'):

    4 describe_pet(pet_name="harry")

    5 describe_pet("harry")

    3.5、避免实参错误

    意思就是在进行参数调用时,要给形参传一定的实参。否则会报

    展开全文
  • JavaScript中的实参与形参分析 https://www.cnblogs.com/shanrengo/p/6386713.html
  • 从系统堆栈角度理解实参与形参      实参与形参,相信是很多朋友学习C语言的一大难点。晦涩难懂难以理解。 百度上搜到的只是说形参实参的功能是作数据传送。那么到底是如何进行数据传递的呢?下面我就从...
  • 有趣的实参与形参

    2017-11-24 20:18:44
    我们今天主要讲的就是实参与形参传递的问题。在参数列表中的就是形式参数,简称形参。当方法调用时,形参就用被变量或者数据替换。而这些变量和数据就是实际参数,也就是实参。还有就是形参是可以选的。即可以没有...
  • 在定义函数时函数名后面括号中的变量名称为“形式...调用函数过程中发生的实参与形参间的数据传递称为“虚实结合”。 数据传递的方向是从实参传到形参,单向传递。 带参函数——实参形参 自行实现pow函数 ...
  • C++实参与形参

    千次阅读 2017-06-28 08:49:15
    实参出现在函数调用的地方,实参的数量类型与形参一样,实参用于初始化形参。 2.形参和函数体内部定义的变量统称为局部变量,仅在函数的作用域内可见,同时局部变量还会隐藏在外层作用域中同名的其他所有声明...
  • java的形参与实参 public static void main(String args[]){ int a=0; //a实参 test(a); System.out.println(a); } //test(形参类型 形参名) public static void test(int a){ a=1; } 上述代码运行后,...
  • 函数的实参与形参问题 相信对于新手来说,刚开始学习编程时,对于实参形参会有些搞不清楚,经常在写函数时搞混。 形参的值传递和引用传递 首先我们来看一个例子: //这个函数的形参没有取引用,所以只是将实参的...
  • 实参与形参的区别 使用 形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。 实参出现在主调函数中,进入被调函数后,实参变量也不能使用,无法修改。 调用 形参变量只有在被调用时才...
  • 形参与实参定义2.实参分类3.形参分类4.可变参数的整体使用一、形参与实参定义def fn(参数们):pass1.1 形参定义函数,在括号内声明的变量名,用来接外面传来的值1.2 实参调用函数,在括号内传入的实际值,值可以为...
  • A)形式参数(简称“形参”) 定义函数时,函数名后面括号中定义的变量,称为参数,这就是所谓的形参。 B)实际参数(简称“实参”) 具有内存空间,并存有数据的变量、常量...实参与形参一一对应,数量、类型、顺序应一致。
  • JavaScript函数遇实参与形参——智能而有原则

    千次阅读 热门讨论 2015-01-13 22:53:48
    简单比较例2、例4、例8,可以得出这样的结论,JS中的函数体与形参、实参以及形参与实参的关系是: 遵循一个原则:函数实现功能 函数体与形参关系:形参必须满足函数体的必要需求,否则没法进行,即使用了形参...
  • 实参与形参的区别

    千次阅读 2018-06-25 19:08:22
    1、形参变量只有在被调用时才分配内存单元,在调用结束时,就会释放出所分配的内存单元。...4、在一般传值调用的机制中只能把实参传送给形参,因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。...
  • 在C语言中,关于形参与实参说明如下。https://www.cnblogs.com/reddercell/p/12168851.html 1)形参是变量,但是函数被调用时才被分配内存。当函数执行完毕返回时,形参占用的内存空间又被释放。 2)实参可以是变量...
  • java实参与形参

    千次阅读 2017-08-31 16:00:42
    形参实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。1、形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存...
  • python 实参与形参

    2020-01-10 14:48:42
    是实际占用内存地址的,而形参只是意义上的一种参数,在定义的时候是不占内存地址的,如在上面例子中,username就是一个形参,尼古拉斯赵四是我在调用函数时传入的一个实参,它的值被存储在形参username中。...
  • c语言:指针变量的实参与形参

    千次阅读 多人点赞 2019-03-13 12:21:45
    最近遇到一个坑,让我对实参形参有了更深的了解。 假如在main方法中有一个指针变量p,它指向的内存地址为20000。现在将它传递到一个函数中,在这个函数里让它指向内存地址为20048。当函数执行完返回到main函数时...
  • 1.形参与实参定义 2.实参分类 3.形参分类 4.可变参数的整体使用 一、形参与实参定义 def fn(参数们): pass 1.1 形参 定义函数,在括号内声明的变量名,用来接外面传来的值 1.2 实参 调用函数,在括号内传入的实际...
  • C语言实参与形参

    2015-01-31 11:13:01
    #include void change(int a) { a = 100; printf("a的地址为%d\n",&a); } void main() { int a;... printf("a的地址为%d\n", &a);... //实参a和形参a在内存中的并不是同一个地址。 //通过调用函数传
  • 实参 arguments的特性 arguments的非标准用法 arguments小案例 1.形参 function test(x, y) { // todo... } 上面的代码中,x和y就是形参形参就是在函数定义时,声明的变量。 在JS中,函数定义并未指定函数形参...
  • 这是函数的数值传递,不是地址传递,因此实参的值可以传给形参,但形参的值不能影响到实参。被调函数中s=2+3+4=9,因为数值传递时,形参的值不能影响实参,所以主调函数中的s=0. 综上分析:运行结果:9,0

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 130,522
精华内容 52,208
关键字:

实参与形参