首先回答你的"使用swap1(arr[1],arr[10]),为什么两个值不能换,这样代入数组元素跟第一个函数的区别是什么?"这个问题.
首先你第二个函数的形式参数是两个整型变量.函数的功能是将两个值分别调换.
你传入的arr[1]和arr[10]是数组中的两个值,所以调换的只是数组中的值.但是内存地址没有变.所以你实际的数组是不会变的.
其次,第一个函数的作用是将数组和数组下标作为形式参数.当你传入数组时,其实传入的是内存地址(很类似于c语言的指针),
就是数组首地址指向于堆内存中的数组,可以直接操作堆内存中数组.所以你调换之后,两个值的内存地址也改变了.所以就调换成功.
感觉自己说的罗里吧嗦的,不过希望楼主能仔细细思考一下,想明白!! |