由于数组是引用,因此arr[x],arr[y]都是在栈中的,在没有进行排序之前也就是temp还没存在之前。arr[x],arr[y]指向他们在堆中的内容,也就是像如1,2,3,4,5.。。。这些内容。进行排序时声明了temp,使它指向arr[x],这样arr[x],temp共同指向原来arr[x]的内容。然后arr[x]=arr[y];这样arr[x]指向了原来arrz[y]的内容,这样arr[x],arr[y]共同指向原来arrz[y]的内容。接着arr[y]=temp;使得arr[y]指向了temp指向的内容,也就是最开始的时候arr[x]的内容。这样arr[x],arr[y]指向的内容就互换了。
由于temp是局部变量,在排序函数结束以后自动垃圾回收。 |