精华内容
下载资源
问答
  • 形式参数和实际参数函数的参数分为形参和实参两种。在本小节中,进一步介绍形参、实参的特点和两者的关系。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被...

    形式参数和实际参数

    函数的参数分为形参和实参两种。在本小节中,进一步介绍形参、实参的特点和两者的关系。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    函数的形参和实参具有以下特点:

    1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。

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

    3.实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。

    4.函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

    【例】可以说明这个问题。

    ">#include

    int add(int num)

    {

    int i;

    for(i=0;i<100;i++)

    {

    num=num+i;

    }

    printf("num=%d\n",num);

    }

    int main()

    {

    int num;

    printf("输入一个数\n");

    scanf("%d",&num);

    add(num);

    printf("n=%d\n",num);

    return 0;

    }

    本程序中定义了一个函数add,该函数的功能是求num+i的累加值。在主函数中输入num值,并作为实参,在调用时传送给add函数的形参量nuum。在主函数中用printf语句输出一次n值,这个num值是实参num的值。在函数add中也用printf语句输出了一次n值,这个num值是形参最后取得的n值0。从运行情况看,输入num值为6。即实参num的值为6。把此值传给函数add时,形参num的初值也为6,在执行函数过程中,形参num的值变为4956。返回主函数之后,输出实参num的值仍为6。可见实参的值不随形参的变化而变化。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • 形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存...

    形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。

    实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

    形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

    1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

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

    3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。

    4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

    5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。

    如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。

    转自:http://blog.163.com/zhengguo_li/blog/static/703014802013423501214/

    形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数.

    实参:全称为"实际参数"是在调用时传递个该函数的参数.

    void Exchg1(int x, inty)

    {inttmp;

    tmp=x;

    x=y;

    y=tmp;

    printf("Exchg1:x=%d,y=%d\n",x,y);

    }void Exchg2(int &x, int &y)

    {inttmp;

    tmp=x;

    x=y;

    y=tmp;

    printf("Exchg2:x=%d,y=%d\n",x,y);

    }void Exchg3(int *x, int *y)

    {inttmp;

    tmp=*x;*x=*y;*y=tmp;

    printf("Exchg3:x=%d,y=%d\n",*x,*y);

    }voidmain()

    {int a=4,b=6;

    Exchg1 (a,b) ;

    printf("a=%d,b=%d\n",a,b);

    Exchg2 (a,b);

    printf("a=%d,b=%d\n",a,b);

    Exchg3(&a,&b) ;

    printf("a=%d,b=%d\n",a,b);

    }

    这里Exchg1函数被调用的时候,并没有成功交换a跟b的数据。为何呢。

    int a=4,b=6;   Exchg1 (a,b) ; //这里本质上发生的是:Exchg1 (intx=a,int y=b) ;   x跟y是函数定义里面的形参,也就是说这里只是把实参a跟b的值赋予了x,y这2个形参变量。接下来,函数里发生的值互换只换掉了x跟y的值,而实参a跟b没有影响。

    Exchg2 (a,b); //再看本质Exchg2 (int &x=a,int &y=b);   这里x跟y都是a,b的引用,操作x跟y交换就等于a跟b交换,自然,调用Exchg2 可以成功交换a跟b

    Exchg3(&a,&b) ; //Exchg3(int *x=&a,int *y=&b);   x跟y2个形参是a跟b的指针,也就是实参数据存放的地址。然后函数里交换了x跟y指向的数据,也就是实参a跟b,所以,交换也是成功的。

    代码运行的结果,exchg1没有交换a,b值;exchg2交换了a,b值,到了exchg,a,b的值似乎没有交换,仍旧是a为4,b为6,刚开始以为代码有问题,后来设置了断点之后,发现代码运行到exchg3(&a,&b)时,a=6,b=4了,所以代码运行结果和初始值一样的话,说明已经交换了a,b的值,至此说明代码是没有任何问题的。

    转自:http://blog.sina.com.cn/s/blog_58c3f7960100ptri.html

    展开全文
  • Java 形参和实参

    千次阅读 多人点赞 2018-09-22 21:56:54
    /*-- 例子 --*/ public class Test { public static void main(String[] args) { Integer a = 1; Integer b = 2; ...a b 的原始的值:"+a+" "+b); swap(a,b)...
    /*-- 例子 --*/
    
    public class Test {
        
        public static void main(String[] args) {
        	Integer a = 1;
        	Integer b = 2;
        	
        	System.out.println("a 和 b 的原始的值:"+a+" "+b);
        	
        	swap(a,b);
        	
        	System.out.println("a 和 b 的现在的值:"+a+" "+b);
        }
    
    	private static void swap(Integer a, Integer b) {
    		// TODO Auto-generated method stub
    		
    	}
        
    }  

    Java 形参和实参的区别:

    形参 :就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的。 形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。 因此,形参只在方法内部有效,所以针对引用对象的改动也无法影响到方法外。

    实参 :就是实际参数,用于调用时传递给方法的参数。实参在传递给别的方法之前是要被预先赋值的。 在本例中 swap 方法 的numa, numb 就是形参,传递给 swap 方法的 a,b 就是实参

    注意:在值传递调用过程中,只能把实参传递给形参,而不能把形参的值反向作用到实参上。在函数调用过程中,形参的值发生改变,而实参的值不会发生改变。而在引用传递调用的机制中,实际上是将实参引用的地址传递给了形参,所以任何发生在形参上的改变也会发生在实参变量上。

    值传递和引用传递

    JAVA的数据类型——分为两大类:基本类型 和 对象类型。相应的,变量也有两种类型:基本类型 和 引用类型。

    基本类型的变量保存原始值,即它代表的值就是数值本身, 原始值一般对应在内存上的栈区;而引用类型的变量保存引用值,引用值指向内存空间的地址。代表了某个对象的引用,而不是对象本身。对象本身存放在这个引用值所表示的地址的位置。被引用的对象对应内存上的堆内存区。
    基本类型包括: byte, short, int, long, char, float, double, boolean 这八大基本数据类型; 引用类型包括: 类类型接口类型数组。

    变量的基本类型和引用类型的区别:基本数据类型在声明时系统就给它分配空间

    int a;
    
    //虽然没有赋值,但声明的时候虚拟机就会 分配 4字节 的内存区域,
    
    //而引用数据类型不同,它声明时只给变量分配了引用空间,而不分配数据空间:    
    
        
    String str;
    
    //声明的时候没有分配数据空间,只有 4byte 的引用大小,
    
    //在栈区,而在堆内存区域没有任何分配
    
    
    str.length();
    
    //这个操作就会报错,因为堆内存上还没有分配内存区域,而 a = 1; 这个操作就不会报错。

    值传递:方法调用时,实际参数把它的值传递给对应的形式参数,函数接收的是原始值的一个copy, 此时内存中存在两个相等的基本类型,即实际参数和形式参数,后面方法中的操作都是对形参这个值的修改,不影响实际参数的值。

    引用传递:也称为地址传递、址传递。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。

    注意:类似的 String, Integer, Float, Double, Short, Byte, Long, Character等基本包装类型类。因为他们本身没有提供方法去改变内部的值,例如 Integer内部有一个 value 来记录 int基本类型的值,但是没有提供修改它的方法,而且 也是 final类型的,无法通过 常规手段更改。所以虽然他们是引用类型的,但是可以认为它是值传递,这个也只是认为,事实上还是引用传递、址传递。

    代码完善:

    private static void swap(Integer numa, Integer numb){
    
            int tmp = numa.intValue();
    
            try{ 
               
    	        Field field = Integer.class.getDeclaredField("value");
    
                field.setAccessible(true);
    
               	field.set(numa, numb);
    
                field.set(numb, new Integer(tmp));
    
    
            }catch(Exception e){
    
                e.printStackTrace();
    
            }
    }

     Integer的装箱操作,当给 Integer.value 赋值 int时,JVM 检测到 int不是Integer类型,需要装箱,才执行了Integer.valueOf()方法。而 field.set(numb,new Integer(tmp)) 设置的 是Integer类型了,就不会再拆箱后再装箱。

     

     

     

     

    展开全文
  • java 形参和实参

    2012-08-22 16:47:16
    比如计算两数的方法 public double getSum(double a,double b)//这里的a,b就是形参 { return a+b; } 实参是调用方法时实际传入的参数,比如调用上述方法 new Xxx().getSum(4,8);//这里的4,8就是实参
    形参在方法头定义中用到。比如计算两数和的方法
    public double getSum(double a,double b)//这里的a,b就是形参
    {
         return a+b;
    }
    
    实参是调用方法时实际传入的参数,比如调用上述方法
    new Xxx().getSum(4,8);//这里的4,8就是实参 
    展开全文
  • 进入changeName1方法,形参a存储实参a的引用,即此时形参和实参指向同一个对象。public changeName1(A a){ a.setName("tom"); } 字符串“tom”对象产生,它的引用也产生了,设为“@tom023”,将引用传给形参name...
  • Java形参和实参的区别

    2017-10-26 14:39:55
    形参:是在定义函数名函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。 例如: int func(int a) {……}这里定义了函数func(),括号里的a即为该函数的形参实参:可以是常量、变量、表达式、函数...
  • 源码地址:...2.当传值调用时,改变的是形参的值,并没有改变实参的值,实参的值可以传递给形参,但是,这个传递是单向的,形参不能传递回实参。 3.当...
  • )被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象。说到这里就明白了题目中声明a和b的数据类型为...
  • 要理解形参和实参,并在编码中避免一些必要的错误,需要弄清两个概念。1、什么是形参和实参2、方法调用时参数传递的过程3、值传递和引用传递import lombok.AllArgsConstructor;import lombok.Data;import lom...
  • 经常会有这样一道面试题,有两个整形变量分别是a = 1 ,b = 2。... 以上这篇Java形参和实参的实例之Integer类型与Int类型用法说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
  • 要理解形参和实参,并在编码中避免一些必要的错误,需要弄清两个概念。1、什么是形参和实参2、方法调用时参数传递的过程3、值传递和引用传递importlombok.AllArgsConstructor;importlombok.Data;importlombok...
  • 下面是学习啦小编为大家准备的java形参和实参的区别,希望大家喜欢!java形参和实参的区别篇一形参不能离开方法。形参只有在方法内才会发生作用,也只有在方法中使用,不会在方法外可见。而实参可以再程序的任何...
  • 形参和实参的区别形参就是形式参数,用于定义方法的时候使用的参数,用来接收调用者传递的参数。形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。因此,形参只在...
  • Java 形参实参

    2018-03-16 14:53:13
    形参和实参的区别形参就是形式参数,用于定义方法的时候使用的参数,用来接收调用者传递的参数。形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元。因此,形参只在...
  • 首先纠正下java2000的第一个错误说法:"java里不叫这个,而是叫传值传对象。".引用jiabobber的话:形参就是形式上的参数啊,实参就是实际的参数啊,其实各种语言形参实参都一样的概念的吧。jiabobber的这句话是对的,...
  • 形参和实参的定义 形参:是定义方法时使用的参数,用来接收调用者传递的参数,而且只有方法调用时虚拟机才会分配内存空间,在方法调用结束后便会释放所分配的内存单元。 实参:是调用方法时给方法传递的值,预先...
  • 【摘要】即将参加全国计算机等级考试的考生们,考试即将到来,...关于2020年全国计算机二级JAVA复习知识点:形参和实参的具体内容如下:2020年全国计算机二级JAVA复习知识点:形参和实参形参:就是形式参数的意思。...
  • 技术老手一看就知道问题出在形参和实参混淆了 JAVA形参和实参的区别: 形参 顾名思义:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的。 形参只有在方法被调用的时候,虚拟机才会分配...
  • 一、在java当中形参和实参分别是指: 形参:用来接收调用该方法时传递的参数。只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间 实参:传递给被调用方法的值,预先创建并赋予确定值 即方法中定义的...
  • java形参和实参的区别 一、形参        形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。 二、实参        ...
  • Java】一文详解Java方法形参和实参

    千次阅读 2020-09-11 17:28:22
    对于形参和实参,我们已经不再陌生,看下面这段代码 public static void main(String[] args) { StringBuffer buffer1 = new StringBuffer("A"); StringBuffer buffer2 = new StringBuffer("B"); test(buffer1...
  • Java形参实参是什么?

    千次阅读 2019-03-22 14:25:06
    形参:全称为“形式参数”是在...没有形参的函数在形参表的位置应该写void.main 函数也可以有形参和返回值,其形参也称为命令行参数,由操作系统在启动程序时初始化,其返回值传递给操作系统。 实参:可以是常量、变...
  • 形参和实参的区别形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把...
  • Java方法的形参和实参

    2020-01-22 22:28:41
    Java方法的形参和实参形参实参传值调用传引用调用总结 形参与实参对应两种类型:值类型与引用类型 值类型:包括8种基本类型(byte、short、int、long、double、float、char、boolean)+ String 引用类型:数组、类...
  • Java 变量 形参和实参

    2020-12-28 10:52:56
    3. 简单来说就是进行函数调用的时候需要实参从主函数中传给被调用函数中的形参,这样函数才可以执行,实参和形参起到一个桥梁的作用。 /*-- 例子 --*/ public class Test { public static void main(String...
  • 形参:全称为“形式参数”是在定义函数名函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。/*** 注意:* 传递参数:形参(方法中)的改变有没有影响实参(main函数中)* 1.基本数据类型...
  • java形参和实参

    2019-08-15 10:01:09
    形参在方法调用时才会对其进行分配空间,例如方法 public void compare(Integera, Integer b){......},那么 这里的ab就称为形式参数,我们在进行方法调用是传递的不管是常量,数值,表达式,字符串 compare(12, 35...
  • java形参和实参的区别(值传递 引用传递) 形参和实参的区别 形参 就是形式参数,用于定义方法的时候使用的参数,用来接收调用者传递的参数。形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,414
精华内容 565
关键字:

java形参和实参

java 订阅