这是我的主要:
int main(){
int array[] = {1,2,3,4,5,6};
int i = 0;
reverse(array,6);
for(i=0; i < 6; i++)
printf("%d\n",array[i]);
}
这是我的反向功能:
void reverse(int * array,int n){
int i;
for(i=0; i < n; i++){
int tmp = array[i];
array[i] = array[n-i];
array[n-i] = tmp;
}
}
我不明白为什么我的输出与输入相同:
1 2 3 4 5 6
我的函数调用没有副作用吗?怎么了?
您只需要在n / 2处停止循环,否则将反转数组(结束为n / 2),然后再次反转数组(从n / 2到n)
void reverse(int * array,int n){
int i;
for(i=0; i < n/2; i++){
int tmp = array[i];
array[i] = array[n-1-i];
array[n-1-i] = tmp;
}
}
此外,您需要使用n-1-i而不是ni
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句