对于数组类型的参数,实际上传的是数组的首地址,因此它是一个地址传递而不是值传递,值传递和地址传递我举个例子就比较好理解:有一个抽屉里面放着一个苹果,这个抽屉相当于是一个住址(也就是地址),苹果相当于该地址中的一个值;如果你传入一个值,相当于把这个苹果克隆了一个给函数,这个时候函数无论怎么处理,这个抽屉里的苹果是没变化的;而地址传递相当于你给了别人一个抽屉,函数把这个抽屉里的东西变化了还给你这个抽屉,里面的东西也变化了。。。。实际上这个题目要理解的是值传递和地址传递的区别
int aa[10]; sub(i,aa); 这里aa是数组指针。一个指针传递过去,在被调用函数里是可以用指针来修改所指向的内容的。 所以传递的实参是aa,形参也没有将aa改变。但是aa指向的数组里的元素内容aa[0], aa[1], aa[2]等等这些改变了。 就是这两句话改变的: if(t>=10){uu[n++]=t/10;uu[n]=t%10;} else uu[n]=t; 这就是指针的作用。