方法调用中的别名问题
博客专区 > ShualLiu 的博客 > 博客详情
方法调用中的别名问题
ShualLiu 发表于12个月前
方法调用中的别名问题
  • 发表于 12个月前
  • 阅读 30
  • 收藏 0
  • 点赞 0
  • 评论 0
摘要: java编程思想
class Letter {
	char c;
}

public class PassObject {
	static void f(Letter y) {
		y.c = 'z';
		System.out.println(y.c);
	}
	
	public static void main(String[] args) {
		Letter x = new Letter();
		x.c = 'a';
		System.out.println(x.c);
		f(x);
		System.out.println(x.c);
	}
}

在调用f()的时候,传递的是Letter对象的引用,而不是Letter对象的副本,因此在f()操作之后,改变的是函数外的字段的值.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void f(char y)
{
  y = 'z';
}

void ff(char *y)
{
  *y = 'z';
}

int main(void)
{
  char x = 'x';
  printf("x is: %c(before pseudo change)\n", x);
  f(x);
  printf("x is: %c(after pseudo change)\n", x);
  ff(&x);
  printf("x is: %c(after veritable change)\n", x);

  return 0;
}

在C语言中,如果进行参数传递,则默认传递的是副本.

共有 人打赏支持
粉丝 3
博文 30
码字总数 13848
×
ShualLiu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: