精华内容
下载资源
问答
  • 对象作为参数

    2018-10-22 11:27:56
    public class Stu {  private String name;  private int age;    public Stu(String name,int age) {  this.name = name;    this.age = age;...//指向学生对象,对象作为参数  } }

    public class Stu {
        private String name;
        private int age;
        
        public Stu(String name,int age) {
            this.name = name;
            
            this.age = age;
        }
        public void setName(String name) {
            this.name = name;
        }
        
        public void setAge(int age) {
            this.age = age;
        }
        
        public void show () {
            System.out.println(name+"   "+age);
        }
    }

     

     

     

    public class Sm {
        Stu [] stus = {};//对象数组里面是实例
        public void addStu(Stu stu) {
            stus = Arrays.copyOf(stus, stus.length+1);
            stus[stus.length-1] = stu;//操作的学生对象
        }
        
        
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Sm sm = new Sm();
            System.out.println("姓名");
            String name = sc.next();
            System.out.println("年龄");
            int age = sc.nextInt();
            sm.addStu(new Stu(name,age));//指向学生对象,对象作为参数
        }
    }

    展开全文
  • c++ 对象作为参数,指针作为参数,引用作为参数

    千次阅读 多人点赞 2018-10-14 22:53:44
    c++ 对象作为参数,指针作为参数,引用作为参数

    c++ 参数传递方式有三种,分别为:传对象,传引用和传指针,那这三种传递方式之间到底有什么区别呢?

    传对象:是将实参对象的值传递给形参对象,是单项传递,在函数中修改形参的值时,不会影响到原来实参的值

    传引用:把实参对象名传给形参对象名,形参对象名就成为实参对象名的别名,实参和形参代表同一个对象,所以改变形参,就是改变实参对象的值.

    传指针:将指向对象的指针作为函数的参数,形参是对象的指针,实参是对象的地址值, 通过改变形参的值来改变实参的地址指向,形参传递的就是实参本身,所以当在函数中改变形参的值时,改变的就是原来实参的值.

    引用和指针有什么区别?
    引用和指针有形式之处,都会对内存地址上存在的变量进行修改,但它不占用新的地址,从未节省开销.

    展开全文
  • c++,类的对象作为形参时一定会调用复制构造函数吗? c++,类的对象作为形参时一定会调用复制构造函数吗?答:如果参数是引用传递,则不会调用任何构造函数;如果是按值传递,则调用复制构造函数,...

    c++,类的对象作为形参时一定会调用复制构造函数吗?

    c++,类的对象作为形参时一定会调用复制构造函数吗?

    答:如果参数是引用传递,则不会调用任何构造函数;如果是按值传递,则调用复制构造函数,按参数的值构造一个临时对象,这个临时对象仅仅在函数执行是存在,函数执行结束之后调用析构函数。

    如果类中没有定义复制构造函数 那对象就不能作为形参?

    答:如果没有定义,编译器会自动为你定义一个,编译器自己定义的复制构造函数是按类成员变量的值复制的。有几个成员变量就重新创建一个对象,那个对象的成员变量和被复制的对象其成员变量的值相同。这里如果成员变量有指针的时候,就会出现多个指针指向同一个对象的问题。
    posted @ 2018-02-06 09:29 史D芬周 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • 对象作为参数传递时:实际上传递的是一份“引用的拷贝”。 引用,可以理解为指针,在主函数中是实参; 引用的拷贝,传递给子函数,是形参; 所以引用在传递给子函数时,是copy版,不是真正的实参。 当实参和形参...

    1. JAVA

    基本数据类型:作为值传递,改变形参不会影响实参。当基本数据类型作为参数传递时,传递的是实参值的副本,即传的是值,无论在函数中怎么操作这个副本,实参的值是不会被改变的。

    当对象作为参数传递时:实际上传递的是一份“引用的拷贝”。
    引用,可以理解为指针,在主函数中是实参;
    引用的拷贝,传递给子函数,是形参;
    所以引用在传递给子函数时,是copy版的原指针(对象的地址),不是真正的实参。
    当实参和形参指向同一对象时,通过形参修改对象可以影响主函数中的对象;
    但是当形参在子函数中被重新指向另一对象(修改了形参即copy版的原指针),再通过形参修改对象就不会影响到主函数中的对象了!

    Examples:

    public class test {
        public static void main(String[] args) {
            StringBuffer sb = new StringBuffer("Hello ");
            System.out.println("before change, sb is "+sb.toString());
            change(sb);
            System.out.println("after change, sb is "+sb.toString());
        }
        public static void change(StringBuffer stringBuffer){
            stringBuffer.append("world !");
        }
    }
    

    程序的运行结果:
      
      before change, sb is Hello
      after change, sb is Hello world !

    public class test {
        public static void main(String[] args) {
            StringBuffer sb = new StringBuffer("Hello ");
            System.out.println("before change, sb is "+sb.toString());
            change(sb);
            System.out.println("after change, sb is "+sb.toString());
        }
        public static void change(StringBuffer stringBuffer){
            stringBuffer = new StringBuffer("Hi ");
            stringBuffer.append("world !");
        }
    }
    

    运行程序后,结果:
      
      before change, sb is Hello
      after change, sb is Hello

    2. C

    一是传递结构体变量,这是值传递,二是传递结构体指针,这是地址传递,三是传递结构体成员,当然这也分为值传递和地址传递。以传值方式传递结构需要对整个结构做一份拷贝。

    结构体变量的值传递:
    函数的形参直接copy实参结构体,所以在函数内改变形参并不会影响主函数中的结构体。

    结构体变量的地址传递
    传进去函数的形参是指针,即对象的地址。定义函数时,func(*Q);在main中定义一个对象Q,调用函数时,func(&Q)。

    Examples:
    1.下面传递结构体变量

    #include<stdio.h>
    #include<string.h>
    #define format "%d\n%s\n%f\n%f\n%f\n"
    struct student
    {
        int num;
        char name[20];
        float score[3];
    };
    void change( struct student stu );
    int main()
    {
        
        struct student stu;
        stu.num = 12345;
        strcpy(stu.name, "Tom");
        stu.score[0] = 67.5;
        stu.score[1] = 89;
        stu.score[2] = 78.6;
        change(stu);
        printf(format, stu.num, stu.name, stu.score[0], stu.score[1],stu.score[2]);
        printf("\n");
        return 0;
    }
     
    void change(struct student stu)
    {
        stu.score[0] = 100;
        strcpy(stu.name, "jerry");
    }
    

    可以看到最终输出的值并未改变。。。

    2.地址传递

    #include<stdio.h>
    #define format "%d\n%s\n%f\n%f\n%f\n"
    struct student
    {
        int num;
        char name[20];
        float score[3];
    };
    void change( struct student* stu );
    int main()
    {
        
        struct student stu;
        stu.num = 12345;
        strcpy(stu.name, "Tom");
        stu.score[0] = 67.5;
        stu.score[1] = 89;
        stu.score[2] = 78.6;
        change(&stu);
        printf(format, stu.num, stu.name, stu.score[0], stu.score[1],stu.score[2]);
        printf("\n");
        return 0;
    }
     
    void change(struct student* p)
    {
        p->score[0] = 100;
        strcpy(p->name, "jerry");
    }
    

    可以看到,通过地址传递修改了结构体内的数据

    用&stu做实参,&stu是结构体变量stu的地址。在调用函数时将该地址传送给形参p(p是指针变量)。这样p就指向stu。

    在change函数中改变结构体内成员的值,在主函数中就输出了改变后的值。

    Reference:
    https://blog.csdn.net/xiangwanpeng/article/details/52454479
    https://www.runoob.com/w3cnote/c-the-structure-of-the-parameter.html

    展开全文
  • 此文章帮助初学者区分参数的值传递和引用传递 java 和C区别之处在于缺少指针概念,C可以通过指针标志内存...2)java 中对象作为参数,传递的都是对象的引用(可以理解为指针概念,实际操作的都是内存中原始对象的成...
  • 对象作为参数传递的特点 在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用,这是一个饱受争议的话题。若传的是值,那么函数接收的只是实参的一个副本,函数对形参的操作并不会对实参产生影响...
  • 问题1: 可变对象 & 不可变对象 **可变对象:**变量所指内存中的对象值可以被改变,...问题2:可变对象直接做函数形参存在的问题: 在python中,一个函数的形参是可以设置默认值的,这是非常方便的一个特性;n...
  • Java中接口对象作为参数传递

    千次阅读 2016-05-23 18:56:14
    Java中接口对象作为参数传递(小例子)
  • java中String对象作为参数传递问题

    千次阅读 2020-06-03 15:24:04
    java中将对象作为参数传递究竟是值传递还是引用传递? 1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的。 2、对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了...
  • 关于Java对象作为参数传递是传值还是传引用的问题

    万次阅读 多人点赞 2016-09-06 22:37:20
    前言 在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用,这是一个饱受争议的话题。若传的是值,那么函数接收的只是实参的一个副本,函数对形参的操作并不会对实参产生影响;若传的是引用,...
  • Java编程中,当对象作为参数传递给方法时候,是按引用传递的,但是有的人会说这实质上是按值传递的。其实两者说的都不错,只是理解的方式不一样罢了,二者的原理其实是一样的。
  •  在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用,这是一个饱受争议的话题。若传的是值,那么函数接收的只是实参的一个副本,函数对形参的操作并不会对实参产生影响;若传的是引用,那么...
  • js通过输入框实现函数对象作为参数传递,直接上代码 <html> <head> <title>函数调用</title> <script> function Show(data1,data2,Func) { //data1 - data2 传入的...
  • 新建maven工程项目,关于feign的项目...自己百度去,下面只说调用服务提供者如何将对象作为参数?(1)导包,如图:(2)在配置文件中添加(3)在service接口中添加(4)在服务提供者中添加至此,完毕!!!!!! ...
  • 用简单类型作为参数就是把参数个数和类型写死,改动影响大,如果使用对象传参,就很灵活,但传递对象的效率会差一点,这两种方式该如何取舍?
  • 新建maven工程项目,关于feign的项目在...自己百度去,下面只说调用服务提供者如何将对象作为参数?(1)导包,如图:(2)在配置文件中添加(3)在service接口中添加(4)在服务提供者中添加至此,完毕!!!!!!...
  •  在C++中对象作为参数采用的是“传值调用”,当实参通过形参传递时,会调用对象(实参)的拷贝构造函数(如果没有显式的定义拷贝构造函数,将自动调用默认拷贝构造函数,它的功能是将实参中的对象原样的拷贝到形参...
  • java中对象作为参数传递一般是引用传递,基本变量传值方式是值传递。但是字符串作为一个对象传递却意外的是值传递。 先定义值传递意义:就是讲原先的基本变量或者引用拷贝一份,作为参数传递给函数。特点是当函数...
  • Python之函数对象作为参数

    千次阅读 2016-04-11 16:11:32
    作为对象,它还可以赋值给其它对象名,或者作为参数传递。函数作为参数传递函数可以作为一个对象,进行参数传递。函数名(比如func)即该对象。比如说:def test(f, a, b): print 'test' print f(a, b)test(func, 3, ...
  • 一、对象作为参数传递到函数中,在函数内部对此对象的参数会影响到外部传递进来的对象。 二、对象作为参数传递到函数中,在函数内部指向其它的对象后,再对此参数对象进行操作时,不影响外部传递进来的对象。 如下...
  • JS处理函数将对象作为参数传递

    千次阅读 2018-12-01 15:52:58
    做项目的时候遇到一个不是很常见的问题,就是js函数传递参数的时候,我们一般是传递一个数字或者是一个字符串,但是当你的需求满足不了的时候,就需要将对象或者数组作为一个参数传递过去,这个时候怎么做呢,今天...
  • 前言 在Java中,当对象作为参数传递时,究竟传递的是对象的值,还是对象的引用,这是一个饱受争议的话题。若传的是值,那么函数接收的只是实参的一个副本,函数对形参的操作并不会对实参产生影响;若传的是引用,...
  • java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? pdd:所谓java只有按值传递:基本类型 值传递;引用类型,地址值传递,所以叫值传递。  当主函数的变量,对象(主本)传递到副函数时,传递的...
  • 面试题: 在调用方法的时候,若要使方法改变参数的值,...用对象作为参数 C.以上都对 D.以上都不对 public class Test { public static void main(String[] args) { int a = 5; int[] arr = {1, 2, 3}; ...
  • Delphi 中将对象作为参数传递的使用

    千次阅读 2010-04-19 08:06:00
    Delphi 中将对象作为参数传递的使用 举例分析2009-07-24 13:40 下面的单击事件,将要调用一个以对象为参数的方法,并将结果显示出来。procedure TForm1.btn1Click(Sender: TObject);varlStrings: TStrings;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,718,975
精华内容 687,590
关键字:

对象作为形参