抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

值与引用的关系

image-20220221193324778

值类型在栈中存储

引用类型在堆中存储

image-20220221190214776

==Class==的值在堆里地址在栈。(栈开一个空间存储地址,通过地址在堆里找到创建的值。)

==Struct==直接在栈里开辟空间来存储值。

image-20220221190510185

此处为cVec的地址与sVec x,sVec Y,开辟了三个。

再来看函数内部:

image-20220221191418690

image-20220221191649642

更改了cvec与svec的x值,

此时**cVec.print()**打印的值为

1cVec(100,0)

**sVec.print()**打印的值也为

sVec(100,0)

函数调用结束,目光回到上面初始开辟的空间。

image-20220221191451664

下方的**cVec.print(),sVec.print()**;

image-20220221191540799

打印结果为:

cVec(100,0)

sVec(0,0)

因为sVec是函数内创建的值,在外面他没有更改。而cVec是通过地址找到堆里的值,在函数里已经将值更改。

如果想要Struct的值跟class一样,需要再前面加ref

image-20220221192825331

image-20220221192734477

image-20220221192920676

评论