zoukankan      html  css  js  c++  java
  • 方法传参(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); }

  • 相关阅读:
    手机管理中的应用【6】——电源管理篇
    NYOJ 14 场地安排(它可以被视为一个经典问题)
    YUV格式转换RGB(基于opencv)
    互联网金融进入洗礼阶段,控制风险是制胜之道
    Uva 409-Excuses, Excuses!(串)
    MATLAB新手教程
    IE无法打开internet网站已终止操作的解决的方法
    关于SetCapture() 和 ReleaseCapture()的使用方法
    wxWidgets刚開始学习的人导引(2)——下载、安装wxWidgets
    MyReport报表引擎2.7.6.7新功能
  • 原文地址:https://www.cnblogs.com/wwzyy/p/6184919.html
Copyright © 2011-2022 走看看