谁能通过 堆和栈跟我讲下什么事值传递什么事引用传递

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:28:52
讲的通俗点哦
最好举个例子

值类型是存储在栈上的,而引用类型是存储在堆上的
值传递是指把在栈上的变量的值传给调用的函数,相当于复制了一个值给函数的参数,那么不管这个函数对这个值进行了什么操作,都不会影响原本的那个变量

引用传递也叫传址,首先引用类型的变量的地址是存储在栈上的,而他的值是存储在堆上的,当传给函数的时候是把地址传给他,也就是函数的那个参数对原来的那个变量的引用,这时候这两个变量都引用同一个值,那么在函数里进行的操作都会影响到这个值

通俗的讲:
你喜欢一个人,可是那个人不喜欢你,于是你克隆了那个人,然后你和那个克隆人相爱了,可是你对那个克隆人怎么样都不会影响到原本的那个人,这就是值传递
你喜欢一个人,可是那个人已经结婚了,于是你搭乘穿梭机回到了过去,然后和那个人相爱了,于是你改变了未来的她,这就是引用传递(好象有点牵强- -!)
这个是值传递
void fun(int n)
{
n++;
}
int a = 5;
fun(a);//最后a的值不会改变
这个是引用传递
void fun(int *n)
{
*n++;
}
int a = 5;
fun(&a);
最后a的值会改变