• 方法传参(JAVA与C的比较)


    java代码:
    public class
    Test{ static int e; // 默认是0 static String f; //默认是null public static void main(String[] args) { int a = 0; char [] b = {'a','b','c'}; String c = "hello"; Person d = new Person(); new Test().TestParameter(a, b, c, d, e); System.out.println("a="+a); System.out.println("b="+b[0]+b[1]+b[2]); System.out.println("c="+c); System.out.println("d="+d.id+d.name); System.out.println(e); System.out.println(f); } public void TestParameter(int a, char[] b,String c, Person d,int e){//这里的 Person d 相当于c中的 Person *d a++; //a = a+1; 现在的a指向的不是刚开始传入的a的地址了,原来的a还是那个数 b[2] = 'e'; //地址没有变,操作的就是b本身 c="abc";//一赋值,就表示c重新指向新的地址,新地址的内容是"abc",原来的数据没变 d.id=3;//地址没变,数据会被修改 d.name = "tom"; e = 2; f = "ffff";
      //注意:如果参数出现被赋值的情况,说明现在的参数地址已经改变,之后的操作都是对新地址的操作,刚开始传入的数据并没有动。 } }

    c代码:
    #include <stdio.h> typedef struct Person { int id; char name[10]; }Person , *Per;
    //形参是指针类型的,那么形参和实参都指向同一块数据域,形参和实参的地址是相同的,形参改变,实参也会改变
    //形参是普通类型的,当实参传入时,形参操作的是实参复制出来的另一份数据域,形参和实参的地址不同,形参改变,实参不受影响
    void func(Person p1, Person *p2, int a1, int *a2) { p1.id = 10; strcpy(p2->name,"jerry"); a1 = 12; *a2 = 23; }

    //形参是地址类型的,形参改变,实参也会改变
    void func02(Person &p){

    }
    void main(){ struct Person p1; struct Person p2; int a1 = 1; int a2 = 2; p1.id = 01; strcpy(p1.name,"tom01"); p2.id = 02; strcpy(p2.name,"tom02"); func(p1,&p2,a1,&a2);    func02(p); // 这里传入的是普通类型,如果p是指针类型的,需要*p这么传 printf(" a1=%d a2=%d p1.id=%d p2.name=%s ",a1,a2,p1.id,p2.name); }

  • 相关阅读:
    数据表格优化
    vue数组和对象的监听变化
    python flask框架搭建以及大佬代码参考
    简单爬虫
    srs的基本配置
    记录飞天程序库调用
    面试题 递归算法1+2+....+100求和
    下载列表组件
    Prometheus之系统安装,启动
    nginx之日志
  • 原文地址:https://www.cnblogs.com/wwzyy/p/6184919.html
Copyright © 2020-2023  润新知