赋值以后会发生什么事
比如a = b,我们暂且不去管a、b是什么类型,我们就想象成任意类型,在赋值之后,会发生什么事呢?
a现在可以正常用,里面能拿到b的值,但是对b来说,有没有什么影响?赋值在内存中实际上是怎么操作的?只是指针的移位吗?
请大家指教一下,谢谢。
[解决办法]
这个问题比较,首先得分两种情况,一种是a,b类型相同,另一种是a,b类型不相同。
如果两者类型相同,声明后编译器会在进程的栈中分配两块内存(如果此处不懂,可以参考内存分配的知识),执行a=b时实际上是将b内存中的值传给了a内存,对于b没有任何影响;
如果两者类型不相同,那么就不是直接赋值了,需要先发生类型转换,再赋值(关于类型转换可以参考我的博客http://www.cnblogs.com/jpcflyer/archive/2012/02/16/2353447.html )
[解决办法]
额??怎么搞出指针来了??赋值可以理解为内存的复制,但是不同类型之间的赋值,可能需要根据类型来重新排列下内存。a=b;只影响a,不影响b
[解决办法]
一言难尽,看看effectivec++吧。
[解决办法]
对于指针a与指针b
a=b,是将a同时指向b指向的内存块(即将b指向的内存块,同时也让a指向)……
*a=*b,就简单了,只是将b指向内存块中的值赋值给a指向内存块中的值……
不过这些都好基础啊……
[解决办法]