方法传参(JAVA与C的比较)
java代码:
public class Test{ static int e; // 默认是0
static String f; //默认是null public static void main(String[] args) { int a = ;
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[]+b[]+b[]);
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[] = 'e'; //地址没有变,操作的就是b本身
c="abc";//一赋值,就表示c重新指向新的地址,新地址的内容是"abc",原来的数据没变
d.id=;//地址没变,数据会被修改
d.name = "tom";
e = ;
f = "ffff";
//注意:如果参数出现被赋值的情况,说明现在的参数地址已经改变,之后的操作都是对新地址的操作,刚开始传入的数据并没有动。 } }
c代码:
#include <stdio.h> typedef struct Person
{
int id;
char name[];
}Person , *Per;
//形参是指针类型的,那么形参和实参都指向同一块数据域,形参和实参的地址是相同的,形参改变,实参也会改变
//形参是普通类型的,当实参传入时,形参操作的是实参复制出来的另一份数据域,形参和实参的地址不同,形参改变,实参不受影响
void func(Person p1, Person *p2, int a1, int *a2)
{
p1.id = ; strcpy(p2->name,"jerry"); a1 = ;
*a2 = ; } //形参是地址类型的,形参改变,实参也会改变
void func02(Person &p){ } void main(){ struct Person p1;
struct Person p2; int a1 = ;
int a2 = ; p1.id = ;
strcpy(p1.name,"tom01");
p2.id = ;
strcpy(p2.name,"tom02"); func(p1,&p2,a1,&a2);
func02(p); // 这里传入的是普通类型,如果p是指针类型的,需要*p这么传
printf(" a1=%d a2=%d p1.id=%d p2.name=%s\n",a1,a2,p1.id,p2.name); }
方法传参(JAVA与C的比较)的更多相关文章
- 再谈Java方法传参那些事
把一个变量带进一个方法,该方法执行结束后,它的值有时会改变,有时不会改变.一开始会觉得--“好神奇呀”.当我们了解java内存分析的知识后,一切都是那么简单明了了--“哦,这么回事呀”.但是今天的上机 ...
- Java 常用类库一,main方法传参String[] args;获取输入Scanner ;hasNext();hasNextInt()
1. main方法传参 package com.zmd.common_class_libraries; /** 给mian方法传参测试 */ public class MainArgsTest { p ...
- java的方法传参,最容易混淆的问题!!!
参数传递 参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了.这种传递方式,我们称为参数传递. 在这里 ...
- 对象引用 方法传参 值传递 引用传递 易错点 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- MyBatis dao层 方法传参
MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled"> INSER ...
- EasyUI queryParams属性 在请求远程数据同时给action方法传参
http://www.cnblogs.com/iack/p/3530500.html?utm_source=tuicool EasyUI queryParams属性 在请求远程数据同时给action方 ...
- javascript 字符串方法传参
javascript 字符串方法传参由于嵌套的单引号,双引号过多.有点混乱.. 正确方法如下: ' <td align="left"><input type= ...
- vue 使用 axios 时 post 请求方法传参无法发送至后台
axios 时 post 请求方法传参无法发送至后台报错如下 Response to preflight request doesn't pass access control check: No ' ...
- VBA中方法传参
将变量做为参数传递给方法 Sub Test() Dim a As Integer a = Add a Debug.Print a '引用传递,a的值发生了变化,输出101 End Sub Functi ...
随机推荐
- Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
- Java Collection知识总结
首先说说java中常用的集合容器:ArrayList,LinkedList,Vector,HashMap,Hashtable,HashSet,TreeSet.[就个人认为] java集合容器本人理解为 ...
- 浅谈系列之 javascript原型与对象
在我学习与使用javascript三个月中,我一直对javascript的继承关系以及prototype理解不清,导致很多时候为什么这么用说不出个所以然来.截止到本周为止,通过之前的学习以及自己的再学 ...
- CSS3与页面布局学习总结(四)——页面布局大全
一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...
- 数据结构笔记--二叉查找树概述以及java代码实现
一些概念: 二叉查找树的重要性质:对于树中的每一个节点X,它的左子树任一节点的值均小于X,右子树上任意节点的值均大于X. 二叉查找树是java的TreeSet和TreeMap类实现的基础. 由于树的递 ...
- 【分布式】Zookeeper的Leader选举
一.前言 前面学习了Zookeeper服务端的相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举. 二.Leader选举 2.1 Leader选举概 ...
- 一个简单的webservice的demo(下)winform异步调用webservice
绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...
- MacOS平台下@rpath在动态链接库中的应用
一.背景介绍 公司开发的一个底层库被用在了Mac平台的多个产品中.在开发这个底层库的初期,对于Mac OSX下的Install name 并没有过多的了解.对于XCode中的install name项 ...
- Attribute操作的性能优化方式
Attribute是.NET平台上提供的一种元编程能力,可以通过标记的方式来修饰各种成员.无论是组件设计,语言之间互通,还是最普通的框架使 用,现在已经都离不开Attribute了.迫于Attribu ...
- alias拦截器的使用
在SSH项目中,有时需要由一个Action跳转到另一个Action.有两种方式可以实现Action之间的跳转,一种是chain,另一种是redirectAction,这两种方式之间的区别是chain是 ...