值与引用的关系
值类型在栈中存储
引用类型在堆中存储
==Class==的值在堆里,地址在栈。(栈开一个空间存储地址,通过地址在堆里找到创建的值。)
==Struct==直接在栈里开辟空间来存储值。
此处为cVec的地址与sVec x,sVec Y,开辟了三个。
再来看函数内部:
更改了cvec与svec的x值,
此时**cVec.print()**打印的值为
1cVec(100,0)
**sVec.print()**打印的值也为
sVec(100,0)
函数调用结束,目光回到上面初始开辟的空间。
下方的**cVec.print(),sVec.print()**;
打印结果为:
cVec(100,0)
sVec(0,0)
因为sVec是函数内创建的值,在外面他没有更改。而cVec是通过地址找到堆里的值,在函数里已经将值更改。
如果想要Struct的值跟class一样,需要再前面加ref