题目:
比如输入:数组是1,2,3,4,5
反序后的结果是:5,4,3,2,1
实现代码如下
#include <stdio.h>
//用数组反序数组
void reserve1(int a[],int n){
int m=(n+1)/2;
int i=0;
for(i;i<m;i++){
int j=n-1-i;
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
//用指针进行反序数组
void reserve2(int *a,int n){
int *p,*q,*length;
int m;
m=(n+1)/2;
p=a;
// length=(a+n+1)/2; //这个地方不是length=(n+1)/2,要记得加上数组的首地址,不要写成这样(a+n+1)/2,
//因为不能对a进行操作,只能进行偏移
length=a+m;
q=a+n-1;
for(;p<length;p++,q--){
int temp=*p;
*p=*q;
*q=temp;
}
}
void main() {
int a[5]={1,2,3,4,5};
int *p;
p=a;
// for(p;p<a+5;p++){
// printf("%d",*p);
// }
int length;
len