值传递和引用传递

值传递:值传递只是把对象的值传入函数,函数中使用的是这个值,而那个对象的值并不会变。

c语言示例:

void a(int v) {
    printf(v);
    v++;
    printf(v);
}
void main() {
    int b = 0;
    a(b);
    printf(b);
}

 程序输出结果是 010 。

这里b的值在a函数中被调用,但是b本身没变。其实值传递相当于在函数中新建了一个对象然后对它赋值再使用。在上例中相当于:

void a(int v) {
    int b = v;
    printf(b);
    b++;
    printf(b);
}

js语言示例:

js中基本类型变量的复制是值传的:

var num1=5;
var num2=num1;
num1++;
console.log(num1+";"+num2);

 结果是6;5。

引用传递:引用传递是将整个对象本身(或地址)传入函数,函数中既可以调用对象的值,还可以改变对象的值。

c语言示例:

void a(int* v) {  //传入的参数为指针
    printf(*v);
    *v++;
    printf(*v);
}
void main() {
    int b = 0;
    a(&b);   //&的意思是取b的地址(指针)
    printf(b);
}

 这里输出结果是011。说明b的值在函数中被改变了。

js示例:

var obj1=new Object();
obj1.name="syt123";
var obj2=obj1;
console.log(obj2.name);//syt123
obj2.name="123";
console.log(obj1.name);//123

 

posted on 2015-08-12 21:11 Juniors 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/sunyt/p/4725560.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值